Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/leoribeiro/struc2vec
This repository provides a reference implementation of struc2vec.
https://github.com/leoribeiro/struc2vec
algorithm graph
Last synced: about 1 month ago
JSON representation
This repository provides a reference implementation of struc2vec.
- Host: GitHub
- URL: https://github.com/leoribeiro/struc2vec
- Owner: leoribeiro
- License: mit
- Created: 2017-01-16T15:35:54.000Z (almost 8 years ago)
- Default Branch: master
- Last Pushed: 2023-07-09T17:46:21.000Z (over 1 year ago)
- Last Synced: 2024-08-02T13:22:32.789Z (5 months ago)
- Topics: algorithm, graph
- Language: Python
- Homepage:
- Size: 18.9 MB
- Stars: 381
- Watchers: 13
- Forks: 115
- Open Issues: 11
-
Metadata Files:
- Readme: README.md
- License: license.md
Awesome Lists containing this project
- StarryDivineSky - leoribeiro/struc2vec
README
# struc2vec
This repository provides a reference implementation of *struc2vec* as described in the paper:
> struc2vec: Learning Node Representations from Structural Identity.
> Leonardo F. R. Ribeiro, Pedro H. P. Saverese, Daniel R. Figueiredo.
> Knowledge Discovery and Data Mining, SigKDD, 2017.The *struc2vec* algorithm learns continuous representations for nodes in any graph. *struc2vec* captures structural equivalence between nodes.
Before to execute *struc2vec*, it is necessary to install the following packages:
``pip install futures``
``pip install fastdtw``
``pip install gensim``### Update
Python 3 version: https://github.com/sebkaz/struc2vec/tree/master### Basic Usage
#### Example
To run *struc2vec* on Mirrored Zachary's karate club network, execute the following command from the project home directory:
``python src/main.py --input graph/karate-mirrored.edgelist --output emb/karate-mirrored.emb``#### Options
To activate optimization 1, use the following option:
``--OPT1 true``
To activate optimization 2:
``--OPT2 true``
To activate optimization 3:
``--OPT3 true``To run *struc2vec* on Barbell network, using all optimizations, execute the following command from the project home directory:
``python src/main.py --input graph/barbell.edgelist --output emb/barbell.emb --num-walks 20 --walk-length 80 --window-size 5 --dimensions 2 --OPT1 True --OPT2 True --OPT3 True --until-layer 6``You can check out the other options available to use with *struc2vec* using:
``python src/main.py --help``#### Input
The supported input format is an edgelist:node1_id_int node2_id_int
#### Output
The output file has *n+1* lines for a graph with *n* vertices.
The first line has the following format:num_of_nodes dim_of_representation
The next *n* lines are as follows:
node_id dim1 dim2 ... dimdwhere dim1, ... , dimd is the *d*-dimensional representation learned by *struc2vec*.
### Miscellaneous
Please send any questions you might have about the code and/or the algorithm to .
*Note:* This is only a reference implementation of the framework *struc2vec*.