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


Python NetworkX eigenvector_centrality用法及代码示例


本文简要介绍 networkx.algorithms.centrality.eigenvector_centrality 的用法。

用法:

eigenvector_centrality(G, max_iter=100, tol=1e-06, nstart=None, weight=None)

计算图 G 的特征向量中心性。

特征向量中心性根据其邻居的中心性计算节点的中心性。节点 的特征向量中心性是由等式定义的向量 的第 元素

其中 是图 G 与特征值 的邻接矩阵。凭借 Perron-Frobenius 定理,如果 是邻接矩阵 的最大特征值([2]),则存在唯一解 ,其所有条目均为正。

参数

G图形

一个networkx图

max_iter整数,可选(默认=100)

幂法中的最大迭代次数。

tol浮点数,可选(默认=1.0e-6)

误差容限用于检查幂法迭代中的收敛性。

nstart字典,可选(默认=无)

每个节点的特征向量迭代的起始值。

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

如果没有,所有的边权重都被认为是相等的。否则保存用作权重的边属性的名称。在这个度量中,权重被解释为连接强度。

返回

nodes字典

以特征向量中心性为值的节点字典。

抛出

NetworkXPointlessConcept

如果图 G 是空图。

NetworkXError

如果nstart 中的每个值都为零。

PowerIterationFailedConvergence

如果算法在幂迭代法的指定迭代次数内未能收敛到指定的容差。

注意

该措施由 [1] 介绍,并在 [2] 中讨论。

幂迭代法用于计算特征向量,收敛为不是保证。我们的方法在之后停止max_iter迭代或当两次迭代之间计算向量的变化小于误差容限时G.number_of_nodes() * tol.此实现使用 (\(A + I\) ) 而不是邻接矩阵\(A\) 因为即使对于具有多个主要特征值的网络,它也会改变频谱以识别正确的特征向量。

对于有向图,这是 “left” 特征向量中心性,对应于图中的 in-edges。对于 out-edges 特征向量中心性,首先使用 G.reverse() 反转图形。

参考

1

Phillip Bonacich. “Power and Centrality: A Family of Measures.” American Journal of Sociology 92(5):1170-1182, 1986 <http://www.leonidzhukov.net/hse/2014/socialnetworks/papers/Bonacich-Centrality.pdf>

2(1,2)

Mark E. J. Newman. Networks: An Introduction. Oxford University Press, USA, 2010, pp. 169.

例子

>>> G = nx.path_graph(4)
>>> centrality = nx.eigenvector_centrality(G)
>>> sorted((v, f"{c:0.2f}") for v, c in centrality.items())
[(0, '0.37'), (1, '0.60'), (2, '0.60'), (3, '0.37')]

相关用法


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