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


Python NetworkX katz_centrality用法及代码示例


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

用法:

katz_centrality(G, alpha=0.1, beta=1.0, max_iter=1000, tol=1e-06, nstart=None, normalized=True, weight=None)

计算图 G 的节点的 Katz 中心性。

Katz 中心性根据其邻居的中心性计算节点的中心性。它是特征向量中心性的推广。节点 的 Katz 中心性为

其中 是图 G 的邻接矩阵,其特征值为

参数 控制初始中心性和

Katz 中心性通过测量直接邻居(一级节点)以及网络中通过这些直接邻居连接到所考虑节点的所有其他节点的数量来计算网络中节点的相对影响。

可以通过参数 向直接邻居提供额外的权重。然而,与远方邻居建立的连接会受到衰减因子 的惩罚,该衰减因子应严格小于邻接矩阵的逆最大特征值,以便正确计算 Katz 中心性。 [1] 中提供了更多信息。

参数

G图形

NetworkX 图表。

alpha浮点数

衰减因子

beta标量或字典,可选(默认=1.0)

重量归因于附近。如果不是标量,则字典必须为每个节点都有一个值。

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

幂法中的最大迭代次数。

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

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

nstart字典,可选

每个节点的 Katz 迭代的起始值。

normalized布尔,可选(默认=真)

如果 True 标准化结果值。

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

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

返回

nodes字典

以 Katz 中心性为值的节点字典。

抛出

NetworkXError

如果参数 beta 不是标量但缺少至少一个节点的值

PowerIterationFailedConvergence

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

注意

Katz 中心性由 [2] 引入。

该算法使用幂法找到G的邻接矩阵的最大特征值对应的特征向量。参数alpha 应严格小于邻接矩阵的最大特征值的倒数,以使算法收敛。可以使用max(nx.adjacency_spectrum(G))得到邻接矩阵的最大特征值 。迭代将在max_iter 迭代或达到number_of_nodes(G) * tol 的容错后停止。

时,Katz 中心性与特征向量中心性相同。

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

参考

1

Mark E. J. Newman: Networks: An Introduction. Oxford University Press, USA, 2010, p. 720.

2

Leo Katz: A New Status Index Derived from Sociometric Index. Psychometrika 18(1):39-43, 1953 https://link.springer.com/content/pdf/10.1007/BF02289026.pdf

例子

>>> import math
>>> G = nx.path_graph(4)
>>> phi = (1 + math.sqrt(5)) / 2.0  # largest eigenvalue of adj matrix
>>> centrality = nx.katz_centrality(G, 1 / phi - 0.01)
>>> for n, c in sorted(centrality.items()):
...     print(f"{n} {c:.2f}")
0 0.37
1 0.60
2 0.60
3 0.37

相关用法


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