COMMUNITY DETECTION_python-louvain
阅读原文时间:2023年07月09日阅读:1

Python-louvain Package

pip install python-louvain

import community
#first compute the best partition
partition = community.best_partition(G)

#Drawing partition

Method 1:

#drawing
size = float(len(set(partition.values())))
pos = nx.spring_layout(G)
count = 0.
for com in set(partition.values()) :
count = count + 1.
list_nodes = [nodes for nodes in partition.keys()
if partition[nodes] == com]
nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 20,
node_color = str(count / size))

nx.draw_networkx_edges(G, pos, alpha=0.5)
plt.show()

Method 2:

pos = nx.spring_layout(G)
values = [partition.get(node) for node in G.nodes()]
nx.draw_networkx(G, pos, cmap=plt.get_cmap('magma'), node_color=values, node_size=50, with_labels=False)

Supplementary knowledge:

1. what is the partition of graphs.

partition: dict; {key (nodes_id): values(community_id)}

2.  function : community.best_partition(G)

Returns
-------
partition : dictionnary
The partition, with communities numbered from 0 to number of communities

def best_partition(graph,
partition=None,
weight='weight',
resolution=1.,
randomize=None,
random_state=None):
"""Compute the partition of the graph nodes which maximises the modularity
(or try..) using the Louvain heuristices

This is the partition of highest modularity, i.e. the highest partition  
of the dendrogram generated by the Louvain algorithm.

Parameters  
----------  
graph : networkx.Graph  
   the networkx graph which is decomposed  
partition : dict, optional  
   the algorithm will start using this partition of the nodes.  
   It's a dictionary where keys are their nodes and values the communities  
weight : str, optional  
    the key in graph to use as weight. Default to 'weight'  
resolution :  double, optional  
    Will change the size of the communities, default to 1.  
    represents the time described in  
    "Laplacian Dynamics and Multiscale Modular Structure in Networks",  
    R. Lambiotte, J.-C. Delvenne, M. Barahona  
randomize : boolean, optional  
    Will randomize the node evaluation order and the community evaluation  
    order to get different partitions at each call  
random\_state : int, RandomState instance or None, optional (default=None)  
    If int, random\_state is the seed used by the random number generator;  
    If RandomState instance, random\_state is the random number generator;  
    If None, the random number generator is the RandomState instance used  
    by \`np.random\`.

Returns  
-------  
partition : dictionnary  
   The partition, with communities numbered from 0 to number of communities

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器