cdlib.algorithms.ilouvain

cdlib.algorithms.ilouvain(g_original: object, labels: dict) AttrNodeClustering

The I-Louvain algorithm extends the Louvain approach in order to deal only with the scalar attributes of the nodes. It optimizes Newman’s modularity combined with an entropy measure.

Supported Graph Types

Undirected

Directed

Weighted

Temporal

Node Attribute

Yes

No

No

No

Yes

Parameters:
  • g_original – a networkx/igraph object

  • labels – dictionary specifying for each node (key) a dict (value) specifying the name attribute (key) and its value (value)

Returns:

AttrNodeClustering object

Example:

>>> from cdlib.algorithms import ilouvain
>>> import networkx as nx
>>> import random
>>> l1 = [0.1, 0.4, 0.5]
>>> l2 = [34, 3, 112]
>>> g_attr = nx.barabasi_albert_graph(100, 5)
>>> labels=dict()
>>> for node in g_attr.nodes():
>>>    labels[node]={"l1":random.choice(l1), "l2":random.choice(l2)}
>>> id = dict()
>>> for n in g.nodes():
>>>     id[n] = n
>>> communities = ilouvain(g_attr, labels, id)
References:

Combe D., Largeron C., Géry M., Egyed-Zsigmond E. “I-Louvain: An Attributed Graph Clustering Method”. <https://link.springer.com/chapter/10.1007/978-3-319-24465-5_16> In: Fromont E., De Bie T., van Leeuwen M. (eds) Advances in Intelligent Data Analysis XIV. IDA (2015). Lecture Notes in Computer Science, vol 9385. Springer, Cham