cdlib aims at standardizing the representation of network communities.
To fulfill such a goal, several Clustering classes are introduced, each one capturing specific community characteristics.
All classes inherit from a same interface, thus sharing some common functionalities.
cdlib algorithms can output the following Clustering types:
- NodeClustering: Node communities (either crisp partitions or overlapping groups);
- FuzzyNodeClustering: Overlapping node communities with explicit node to community belonging score;
- BiNodeClustering: Clustering of a Bipartite graphs (with the explicit representation of class homogeneous communities);
- AttrNodeClustering: Clustering of feature-rich (node-attributed) graphs;
- EdgeClustering: Edge communities;
- TemporalClustering: Clustering of Temporal Networks;
For a complete overview of the methods exposed by
cdlib clustering objects refer to the following documentation.
Using Clustering objects with your own algorithm¶
I have a clustering obtained by an algorithm not included in
CDlib. Can I load it in a Clustering object to leverage the evaluation and visualization facilities of your library?
Yes you can.
Just transform your clustering in a list of lists (we represent each community as a list of node ids) and then create a NodeClustering (or any other Clustering) object from it.
from cdlib import NodeClustering communities = [[1,2,3], [4,5,6], [7,8,9,10,11]] coms = NodeClustering(communities, graph=None, method_name="your_method")
Of course, to compute some evaluation scores/plot community-networks you’ll also have to pass the original graph (as igraph/networkx object) while building the NodeClustering instance.