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个社区,请将 cutoffbest_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如果 cutoffbest_n 值不在范围 [1, G.number_of_nodes()] 内,或者如果 best_n < cutoff

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]