当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python NetworkX modularity用法及代码示例


本文简要介绍 networkx.algorithms.community.quality.modularity 的用法。

用法:

modularity(G, communities, weight='weight', resolution=1)

返回图的给定分区的模块化。

模块化在[1]中定义为

其中 是边数, G的邻接矩阵, 的度数, 是分辨率参数, 是1如果 在同一个社区,否则为 0。

根据[2](并通过一些代数验证)这可以简化为

其中 sum 迭代所有社区 是边数, 是社区的 intra-community 链接数 是社区中节点的度数之和 是分辨率参数。

分辨率参数设置intra-group 边和inter-group 边之间的任意权衡。通过分析具有多个 gamma 值的同一网络,然后组合结果,可以发现更复杂的分组模式 [3]。也就是说,简单地使用 gamma=1 是很常见的。更多关于伽玛选择的信息请参见[4]。

第二个公式是实际用于模块化计算的公式。对于有向图,第二个公式将 替换为

参数

GNetworkX 图表
communities节点集的列表或可迭代

这些节点集必须代表 G 节点的一个分区。

weight字符串或无,可选(默认=”weight”)

保存用作权重的数值的边属性。如果 None 或边不具有该属性,则该边的权重为 1。

resolution浮点数(默认=1)

如果分辨率小于 1,则模块化有利于更大的社区。大于 1 有利于较小的社区。

返回

Q浮点数

分区的模块化。

抛出

NotAPartition

如果 communities 不是 G 的节点的分区。

参考

1

M. E. J. Newman “Networks: An Introduction”, page 224. Oxford University Press, 2011.

2

Clauset, Aaron, Mark EJ Newman, and Cristopher Moore. “Finding community structure in very large networks.” Phys. Rev. E 70.6 (2004). <https://arxiv.org/abs/cond-mat/0408187>

3

Reichardt and Bornholdt “Statistical Mechanics of Community Detection” Phys. Rev. E 74, 016110, 2006. https://doi.org/10.1103/PhysRevE.74.016110

4

M. E. J. Newman, “Equivalence between modularity optimization and maximum likelihood methods for community detection” Phys. Rev. E 94, 052315, 2016. https://doi.org/10.1103/PhysRevE.94.052315

例子

>>> import networkx.algorithms.community as nx_comm
>>> G = nx.barbell_graph(3, 0)
>>> nx_comm.modularity(G, [{0, 1, 2}, {3, 4, 5}])
0.35714285714285715
>>> nx_comm.modularity(G, nx_comm.label_propagation_communities(G))
0.35714285714285715

相关用法


注:本文由纯净天空筛选整理自networkx.org大神的英文原创作品 networkx.algorithms.community.quality.modularity。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。