Skip to main content

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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

partition_sknetwork-0.0.4.tar.gz (7.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

partition_sknetwork-0.0.4-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file partition_sknetwork-0.0.4.tar.gz.

File metadata

  • Download URL: partition_sknetwork-0.0.4.tar.gz
  • Upload date:
  • Size: 7.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.0

File hashes

Hashes for partition_sknetwork-0.0.4.tar.gz
Algorithm Hash digest
SHA256 4e3b22a934c8f1e5f2f090c949af39ab9865065acc5a29b5a1fce8ad31619c11
MD5 6ccea577814f15a18a5bf2d1e2b680bf
BLAKE2b-256 4b71284a157ae7aaf45afd614176283e6e1087d875b12f0ddc98ff2e345f30a8

See more details on using hashes here.

File details

Details for the file partition_sknetwork-0.0.4-py3-none-any.whl.

File metadata

File hashes

Hashes for partition_sknetwork-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6133b7f20acdb498bdd0a73cb20b6db619a2175faaa19fdaad4e2e9b700231b3
MD5 c831993d66e4b1a3a3062cc1bad1b0f0
BLAKE2b-256 2ff16ed2a6ff2d3741a885e4455f5b9388d371efa88ae8a87476aaae0dcc1129

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page