Skip to main content

Adds ensemble clustering (ecg) and graph-aware measures (gam) to igraph.

Project description

Graph Partition and Measures

Python3 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 igraph package. A version for networkx is also available: partition-networkx.

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", https://arxiv.org/abs/1806.11494.

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_igraph.

import numpy as np
import igraph as ig
import partition_igraph

Next, let's build a graph with communities.

P = np.full((10,10),.025)
np.fill_diagonal(P,.1)
## 1000 nodes, 10 communities
g = ig.Graph.Preference(n=1000, type_dist=list(np.repeat(.1,10)),
                        pref_matrix=P.tolist(),attribute='class')
## the 'ground-truth' communities
tc = {k:v for k,v in enumerate(g.vs['class'])}

Run Louvain and ecg:

ml = g.community_multilevel()
ec = g.community_ecg(ens_size=32)

Finally, we show a few examples of measures we can compute with gam:

## for 'gam' partition are either 'igraph.clustering.VertexClustering' or 'dict'
print('Adjusted Graph-Aware Rand Index for Louvain:',g.gam(ml,tc))
print('Adjusted Graph-Aware Rand Index for ECG:',g.gam(ec,tc))
print('\nJaccard Graph-Aware for Louvain:',g.gam(ml,tc,method="jaccard",adjusted=False))
print('Jaccard Graph-Aware for ECG:',g.gam(ec,tc,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_igraph-0.0.7.tar.gz (5.4 kB view details)

Uploaded Source

Built Distribution

partition_igraph-0.0.7-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file partition_igraph-0.0.7.tar.gz.

File metadata

  • Download URL: partition_igraph-0.0.7.tar.gz
  • Upload date:
  • Size: 5.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.10.9

File hashes

Hashes for partition_igraph-0.0.7.tar.gz
Algorithm Hash digest
SHA256 04f89d127fdd86a32f18ad7560211a130af3cea477078953aa686a9898b38f5e
MD5 e1099640e9dfd3cccc1fd99d6ad244df
BLAKE2b-256 16efe90473d0433f21e07c19f40bfd76dd0fb9be7bd0afc3e0370270a26b8d7e

See more details on using hashes here.

File details

Details for the file partition_igraph-0.0.7-py3-none-any.whl.

File metadata

  • Download URL: partition_igraph-0.0.7-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.7.1 importlib_metadata/6.0.0 pkginfo/1.9.6 requests/2.28.1 requests-toolbelt/0.9.1 tqdm/4.64.1 CPython/3.10.9

File hashes

Hashes for partition_igraph-0.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 d7e2a7dd0689b344062c5c661a413721153f377e8e1f01b09448d4a1c4e88590
MD5 1141fe208852a021c05a18eb3cfb4831
BLAKE2b-256 87de4cb6e199401301596b561ca089778a6814c7d9af0705c8bf1f6db232aa67

See more details on using hashes here.

Supported by

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