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中心性 \(i\)

\[x i=\alpha\sum j a i j x j+\beta,\]

哪里 \(A\) 是图G的具有特征值的邻接矩阵 \(\lambda\)

该参数 \(\beta\) 控制初始中心度和

\[\α<\frac 1 \lambda \max。\]

katz centrality通过测量相邻节点(一级节点)和网络中通过这些相邻节点连接到考虑中节点的所有其他节点的数量,计算网络中节点的相对影响。

可通过参数将额外权重提供给紧邻的邻居 \(\beta\) 。然而,与远方邻居建立的连接会受到衰减系数的影响 \(\alpha\) 它应该严格小于邻接矩阵的逆最大特征值,以便正确地计算Katz中心性。有关详细信息,请参阅 [1].

参数
G图表

网络X图。

alpha浮动

衰减系数

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

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

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

幂方法中的最大迭代次数。

tol浮点,可选(默认值=1.0E-6)

在幂方法迭代中用于检验收敛的误差容差。

nstart词典,可选

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

normalized布尔值,可选(默认值=True)

如果为True,则规格化结果值。

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

如果没有,则所有边权重被视为相等。否则,保留用作权重的边属性的名称。在这种测量中,重量被解释为连接强度。

返回
nodes词典

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

加薪
NetworkXError

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

PowerIterationFailedConvergence

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

笔记

Katz中心性是由 [2].

该算法利用幂函数的方法求出邻接矩阵的最大特征值所对应的特征向量 G 。该参数 alpha 应严格小于邻接矩阵最大特征值的倒数,才能使算法收敛。您可以使用 max(nx.adjacency_spectrum(G)) 得到 \(\lambda_{{\max}}\) 邻接矩阵的最大特征值。迭代将在以下时间后停止 max_iter 迭代次数或容错量为 number_of_nodes(G) * tol 已经联系上了。

什么时候 \(\alpha = 1/\lambda_{{\max}}\)\(\beta=0\) ,Katz中心性与特征向量中心性相同。

对于有向图,这会找到对应于图中边的“左”特征向量。对于外缘,katz中心性首先用 G.reverse() .

工具书类

1

马克·E·J·纽曼:网络:导论。牛津大学出版社,美国,2010年,第720页。

2

利奥·卡茨:一种从社会计量指数衍生的新地位指数。《心理学》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