Ensemble Clustering for Graphs (ECG) and Graph aware measurse (GAM) for sknetwork.
Project description
Graph Partition and Measures
Python code implementing 11 graph-aware measures (gam) for comparing graph partitions as well as a stable ensemble-based graph partition algorithm (ecg). This verion works with the sknetwork package. Versions for networkx and igraph are also available: partition-networkx, partition-igraph.
Graph aware measures (gam)
The measures are respectively:
- 'rand': the RAND index
- 'jaccard': the Jaccard index
- 'mn': pairwise similarity normalized with the mean function
- 'gmn': pairwise similarity normalized with the geometric mean function
- 'min': pairwise similarity normalized with the minimum function
- 'max': pairwise similarity normalized with the maximum function
Each measure can be adjusted (recommended) or not, except for 'jaccard'. Details can be found in:
Valérie Poulin and François Théberge, "Comparing Graph Clusterings: Set Partition Measures vs. Graph-aware Measures", IEEE Transactions on Pattern Analysis and Machine Intelligence 43, 6 (2021) https://doi.org/10.1109/TPAMI.2020.3009862
Ensemble clustering for graphs (ecg)
This is a good, stable graph partitioning algorithm. Details for ecg can be found in:
Valérie Poulin and François Théberge, "Ensemble clustering for graphs: comparisons and applications", Appl Netw Sci 4, 51 (2019). https://doi.org/10.1007/s41109-019-0162-z
Example
We need to import the supplied Python file partition_sknetwork.
import sknetwork as sn
import partition_sknetwork as ps
Next, let's build a graph with communities.
block_sizes = [100 for _ in range(10)]
g = sn.data.models.block_model(block_sizes, 0.1, 0.025, seed=42)
# Store the ground truth communities
labels = np.array([i for i,block_size in enumerate(block_sizes) for _ in range(block_size)])
Run Louvain and ecg:
louvain = sn.clustering.Louvain(shuffle_nodes=True, random_state=42).fit_predict(g)
ecg = ps.ECG(random_state=42).fit_predict(g)
Finally, we show a few examples of measures we can compute with gam:
print('Adjusted Graph-Aware Rand Index for Louvain:',ps.gam(g, labels, louvain))
print('Adjusted Graph-Aware Rand Index for ECG:',ps.gam(g, labels, ecg))
print('Jaccard Graph-Aware for Louvain:',ps.gam(g, labels, louvain, method="jaccard", adjusted=False))
print('Jaccard Graph-Aware for ECG:',ps.gam(g, labels, ecg, method="jaccard", adjusted=False))
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file partition_sknetwork-0.0.3.tar.gz.
File metadata
- Download URL: partition_sknetwork-0.0.3.tar.gz
- Upload date:
- Size: 6.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
221751f9fef566df24d2c542ef6195f09b304b68ee735781f6e12555c1a51673
|
|
| MD5 |
5036aa4e863621ac3be5cb60247650a9
|
|
| BLAKE2b-256 |
c833832ce6b9b335e9f3b30f2da11a9bf8de3458721f77794b295ef227c8e8ea
|
File details
Details for the file partition_sknetwork-0.0.3-py3-none-any.whl.
File metadata
- Download URL: partition_sknetwork-0.0.3-py3-none-any.whl
- Upload date:
- Size: 6.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64bea9ab928d3554a9ce9904a89f08079d1ec15e3ce5ed4a59958cb1689ce521
|
|
| MD5 |
16bb3b7b0bd3990cdf054527db207c24
|
|
| BLAKE2b-256 |
d9f11f91a467fcc9f7848f12af9178c841e121432657a1a3a2d61c69bc71a15d
|