聚类#
- clustering(G, nodes=None, weight=None)[source]#
计算节点的聚类系数。
对于无权图,节点 \(u\) 的聚类系数是经过该节点的可能三角形中实际存在的三角形所占的比例,
\[c_u = \frac{2 T(u)}{deg(u)(deg(u)-1)},\]其中 \(T(u)\) 是经过节点 \(u\) 的三角形数量,\(deg(u)\) 是 \(u\) 的度。
对于加权图,有几种方法来定义聚类系数 [1]。此处使用的是定义为子图边权重的几何平均值的方法 [2],
\[c_u = \frac{1}{deg(u)(deg(u)-1))} \sum_{vw} (\hat{w}_{uv} \hat{w}_{uw} \hat{w}_{vw})^{1/3}.\]边权重 \(\hat{w}_{uv}\) 通过网络中的最大权重进行归一化,即 \(\hat{w}_{uv} = w_{uv}/\max(w)\)。
如果 \(deg(u) < 2\),则 \(c_u\) 的值设为 0。
此外,这种加权定义已推广到支持负边权重 [3]。
对于有向图,聚类系数类似地定义为所有可能的有向三角形所占的比例,或分别是无权有向图和加权有向图的子图边权重的几何平均值 [4]。
\[c_u = \frac{T(u)}{2(deg^{tot}(u)(deg^{tot}(u)-1) - 2deg^{\leftrightarrow}(u))},\]其中 \(T(u)\) 是经过节点 \(u\) 的有向三角形数量,\(deg^{tot}(u)\) 是 \(u\) 的入度和出度的总和,\(deg^{\leftrightarrow}(u)\) 是 \(u\) 的互惠度。
- 参数:
- G图
- nodes节点,节点的可迭代对象,或 None (默认=None)
如果是单个节点,则返回该节点的三角形数量。如果是可迭代对象,则计算这些节点中每个节点的三角形数量。如果是
None
(默认值),则计算G
中所有节点的三角形数量。- weight字符串或 None,可选 (默认=None)
用作权重的边属性的名称。如果为 None,则每条边的权重为 1。
- 返回值:
- out浮点数,或字典
指定节点的聚类系数
注意事项
忽略自环。
参考文献
[1]J. Saramäki, M. Kivelä, J.-P. Onnela, K. Kaski, and J. Kertész 在 Physical Review E, 75 027105 (2007) 中发表的关于聚类系数向加权复杂网络的推广的文章。 http://jponnela.com/web_documents/a9.pdf
[2]J. P. Onnela, J. Saramäki, J. Kertész, and K. Kaski 在 Physical Review E, 71(6), 065103 (2005) 中发表的关于加权复杂网络中 motif 的强度和一致性的文章。
[3]G. Costantini 和 M. Perugini 在 PloS one, 9(2), e88669 (2014) 中发表的关于聚类系数向带符号相关网络的推广的文章。
[4]G. Fagiolo 在 Physical Review E, 76(2), 026107 (2007) 中发表的关于复杂有向网络中聚类的文章。
示例
>>> G = nx.complete_graph(5) >>> print(nx.clustering(G, 0)) 1.0 >>> print(nx.clustering(G)) {0: 1.0, 1: 1.0, 2: 1.0, 3: 1.0, 4: 1.0} ----