當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。