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 个社区,请将 cutoffbest_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如果 cutoffbest_n 的值不在以下范围内

[1, G.number_of_nodes()],或者如果 best_n < cutoff

另请参见

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]