greedy_modularity_communities#
- greedy_modularity_communities(G, weight=None, resolution=1, cutoff=1, best_n=None)[source]#
使用贪婪模块度最大化在G中寻找社区。
该函数使用Clauset-Newman-Moore贪婪模块度最大化[Rce363827c0a4-2]_方法,找到具有最大模块度的社区划分。
贪婪模块度最大化从每个节点在其自己的社区开始,并反复合并产生最大模块度的一对社区,直到无法进一步增加模块度(达到最大值)。两个关键字参数调整停止条件。
cutoff
是社区数量的下限,因此您可以在达到最大值之前停止该过程(用于节省计算时间)。best_n
是社区数量的上限,因此您可以使过程继续进行,直到最多剩下n个社区,即使最大模块度出现在更多社区的情况下。要获得恰好n个社区,请将cutoff
和best_n
都设置为n。该函数最大化广义模块度,其中
resolution
是分辨率参数,通常表示为:math:gamma
。参见:func:modularity
。- Parameters:
- GNetworkX图
- weight字符串或None, 可选 (默认=None)
用于表示边权重的边属性名称。如果为None,则每条边的权重为1。 节点的度是与其相邻边的权重之和。
- resolution浮点数, 可选 (默认=1)
如果分辨率小于1,模块度倾向于较大的社区。 大于1则倾向于较小的社区。
- cutoff整数, 可选 (默认=1)
合并过程停止的社区数量下限。即使模块度未达到最大值,过程也会在此数量的社区处停止。目的是让用户提前停止过程。如果在达到截止值之前找到模块度的最大值,过程会提前停止。
- best_n整数或None, 可选 (默认=None)
合并过程不会停止的社区数量上限。这会强制社区合并继续进行,即使模块度开始下降,直到剩下
best_n
个社区。 如果为None
,则不会强制其在最大值之后继续。
- Returns:
- communities: 列表
一个由节点冻结集组成的列表,每个社区一个。 按长度排序,最大的社区在前。
- Raises:
- ValueError如果
cutoff
或best_n
值不在范围[1, G.number_of_nodes()]
内,或者如果best_n
<cutoff
。
- ValueError如果
See also
modularity
References
[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.
Examples
>>> 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]