greedy_modularity_communities#
- greedy_modularity_communities(G, weight=None, resolution=1, cutoff=1, best_n=None)[source]#
使用贪婪模块度最大化方法在 G 中寻找社区。
此函数使用 Clauset-Newman-Moore 贪婪模块度最大化方法 [2] 来寻找具有最大模块度的社区划分。
贪婪模块度最大化从每个节点作为自己的社区开始,然后重复合并能够带来最大模块度增益的社区对,直到模块度无法进一步增加(达到最大值)。有两个关键字参数可以调整停止条件。
cutoff
是社区数量的下限,因此您可以在达到最大值之前停止该过程(用于节省计算时间)。best_n
是社区数量的上限,因此您可以强制该过程继续进行,直到最多剩下 n 个社区,即使最大模块度发生在社区数量更多的情况下。要获得恰好 n 个社区,请将cutoff
和best_n
都设置为 n。此函数最大化广义模块度,其中
resolution
是分辨率参数,通常表示为 \(\gamma\)。参见modularity()
。- 参数:
- GNetworkX 图
- weight字符串或 None,可选(默认为 None)
一个边属性的名称,该属性存储用作权重的数值。如果为 None,则每条边的权重为 1。节点的度是与该节点相邻边的权重之和。
- resolution浮点数,可选(默认为 1)
如果分辨率小于 1,模块度倾向于较大的社区。大于 1 则倾向于较小的社区。
- cutoff整数,可选(默认为 1)
合并过程停止的最小社区数量。即使模块度未最大化,该过程也会在此社区数量时停止。目的是让用户提前停止过程。如果找到模块度的最大值,则过程会在截止值之前停止。
- best_n整数或 None,可选(默认为 None)
合并过程不会停止的最大社区数量。这会强制社区合并在模块度开始下降后继续进行,直到剩下
best_n
个社区。如果为None
,则不会强制其在最大值之后继续进行。
- 返回:
- communities: 列表
一个由节点冻结集合组成的列表,每个冻结集合代表一个社区。按长度排序,最大的社区排在前面。
- 引发:
- ValueError如果
cutoff
或best_n
的值不在以下范围内 [1, G.number_of_nodes()]
,或者如果best_n
<cutoff
。
- ValueError如果
另请参见
modularity
参考
[1]Newman, M. E. J. “Networks: An Introduction”, page 224 Oxford University Press 2011.
[2]Clauset, A., Newman, M. E., & Moore, C. “Finding community structure in very large networks.” Physical Review E 70(6), 2004.
[3]Reichardt and Bornholdt “Statistical Mechanics of Community Detection” Phys. Rev. E74, 2006.
[4]Newman, M. E. J.”Analysis of weighted networks” Physical Review E 70(5 Pt 2):056131, 2004.
示例
>>> G = nx.karate_club_graph() >>> c = nx.community.greedy_modularity_communities(G) >>> sorted(c[0]) [8, 14, 15, 18, 20, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33]