python社区检测python-louvain用法示例详解–点击此处看全文
文章目录
community该包实现了社区检测。
包名称是community,但在pypi上引用为python-louvain
由Louvain算法生成的树状图的最高分区
community.best_partition(graph, partition=None, weight='weight', resolution=1.0, randomize=None, random_state=None)
使用Louvain启发式算法计算最大化模块度的图节点的分区(或尝试…)
这是最高模块度的分区,即由Louvain算法生成的树状图的最高分区。
参数:
-
graph:networkx.Graph
要进行分解的networkx图 -
partition:dict,可选
算法将使用此节点的分区。它是一个字典,其中键是节点,值是社区。 -
weight:str,可选
在图中用作权重的键。默认为’weight’。 -
resolution:double,可选
将更改社区的大小,默认为1。表示在“Laplacian Dynamics and Multiscale Modular Structure in Networks”中描述的时间,R. Lambiotte,J.-C. Delvenne,M. Barahona
-
randomize:boolean,可选
将随机化节点评估顺序和社区评估顺序以获得每次调用时的不同分区 -
random_state:int,RandomState实例或None,可选(默认=None)
如果是int,则random_state是随机数生成器使用的种子;如果是RandomState实例,则random_state是随机数生成器;如果是None,则随机数生成器是np.random使用的RandomState实例。
返回:
- partition:字典
分区,其中社区编号从0到社区数
引发:
- NetworkXError
如果图不是无向图。
参见:
- generate_dendrogram
获取所有分解级别
注意:
- 使用Louvain算法
参考文献:
示例:
基本用法
# 基本用法
import community as community_louvain
import networkx as nx
G = nx.erdos_renyi_graph(20, 0.1)
partition = community_louvain.best_partition(G)
基本用法:
- 导入
community和networkx库 - 创建一个随机的Erdos-Renyi图
- 使用
best_partition函数计算图节点的最优分区,并将结果保存在partition变量中
partition
Out[7]:
{0: 0,
1: 3,
2: 2,
3: 3,
4: 0,
5: 3,
6: 1,
7: 2,
8: 2,
9: 2,
10: 2,
11: 0,
12: 2,
13: 2,
14: 0,
15: 1,
16: 3,
17: 2,
18: 3,
19: 1}
显示带有其社区的图:
# 显示带有其社区的图:
# 由于Erdos-Renyi图没有真正的社区结构,
# 所以加载karate俱乐部图代替
import community as community_louvain
import matplotlib.cm as cm
import matplotlib.pyplot as plt
import networkx as nx
G = nx.karate_club_graph()
# 计算最佳分区
partition = community_louvain.best_partition(G)
# 绘制图形
pos = nx.spring_layout

这篇博客详细介绍了如何使用python-louvain库在Python中进行社区检测,包括Louvain算法的基本用法、显示带有社区的图、生成以社区为节点的图以及计算图的模块度等操作。示例代码展示了如何应用这些方法来处理Erdos-Renyi图。
最低0.47元/天 解锁文章
645

被折叠的 条评论
为什么被折叠?



