This repository provides ten community detection methods The using each methods is done in the following steps:
- User types the argument which is composed of population, neighbors, probability, algorithm
- User queries ainize server with the Num 1's arguments
- ainize-node-join-neighbors Ainized server return a dictionary.
ainize-node-join-neighbors server is dockerlized, so it can be built and run using docker commands.
$ docker build -t [your name]/[your docker repo] .
$ docker run -p 80:80 -d [your name]/[your docker repo]
Now the server is available at http://localhost. To learn how to query the server, see the next section
Note that the docker image can be deployed using any docker-based deploy platform ainize.ai
http://localhost/?population=[input integer number]&neighbors=[input integer number]&probability=[input float number]&alogorithm=[input method]
Note that
- population is enough larger than neighbors e.g population = 100 , neighbors = 20
- probability less than or equal to 1
- There are 10 methods walklets, deepWalk, splitter, edmot, danmf, mnmf, labelPropagation, graRep, graphWave, nnsed
- In this paper, nnsed is superior method than other detection methods so I recommend using nnsed method first.
Karate Club is an unsupervised machine learning extension library for NetworkX.
Karate Club consists of state-of-the-art methods to do unsupervised learning on graph structured data. To put it simply it is a Swiss Army knife for small-scale graph mining research. First, it provides network embedding techniques at the node and graph level. Second, it includes a variety of overlapping and non-overlapping commmunity detection methods. The package also includes methods that can deal with bipartite, temporal and heterogeneous graphs. Implemented methods cover a wide range of network science (NetSci, Complenet), data mining (ICDM, CIKM, KDD), artificial intelligence (AAAI, IJCAI) and machine learning (NeurIPS, ICML, ICLR) conferences and pieces from prominent journals.
Citing
If you find Karate Club useful in your research, please consider citing the following paper:
@misc{rozemberczki2020karateclub,
title = {Karate Club: A tool for unsupervised learning on graph structured data.},
author = {Benedek Rozemberczki and Rik Sarkar},
year = {2020} }
A simple example
Karate Club makes the use of modern community detection tecniques quite easy (see here for the accompanying tutorial). For example, this is all it takes to use on a Watts-Strogatz graph Ego-splitting:
import networkx as nx
from karateclub import EgoNetSplitter
g = nx.newman_watts_strogatz_graph(1000, 20, 0.05)
splitter = EgoNetSplitter(1.0)
splitter.fit(g)
print(splitter.overlapping_partitions)
Models included
In detail, the following methods are currently implemented.
Overlapping Community Detection
-
DANMF from Ye et al.: Deep Autoencoder-like Nonnegative Matrix Factorization for Community Detection (CIKM 2018)
-
M-NMF from Wang et al.: Community Preserving Network Embedding (AAAI 2017)
-
Ego-Splitting from Epasto et al.: Ego-splitting Framework: from Non-Overlapping to Overlapping Clusters (KDD 2017)
-
NNSED from Sun et al.: A Non-negative Symmetric Encoder-Decoder Approach for Community Detection (CIKM 2017)
Non-Overlapping Community Detection
-
EdMot from Li et al.: EdMot: An Edge Enhancement Approach for Motif-aware Community Detection (KDD 2019)
-
Label Propagation from Raghavan et al.: Near Linear Time Algorithm to Detect Community Structures in Large-Scale Networks (Physics Review E 2007)
Neighbourhood-Based Node Level Embedding
-
Walklets from Perozzi et al.: Don't Walk, Skip! Online Learning of Multi-scale Network Embeddings (ASONAM 2017)
-
GraRep from Cao et al.: GraRep: Learning Graph Representations with Global Structural Information (CIKM 2015)
-
DeepWalk from Perozzi et al.: DeepWalk: Online Learning of Social Representations (KDD 2014)
Structural Node Level Embedding
- GraphWave from Donnat et al.: Learning Structural Node Embeddings via Diffusion Wavelets (KDD 2018)
Graph Level Embedding
Head over to our documentation to find out more about installation and data handling, a full list of implemented methods, and datasets. For a quick start, check out our examples.
If you notice anything unexpected, please open an issue and let us know. If you are missing a specific method, feel free to open a feature request. We are motivated to constantly make Karate Club even better.
Installation
$ pip install karateclub
Running examples
$ python examples.py