katz_centrality#

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

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

Katz 中心性根据节点的邻居中心性来计算节点的中心性。它是特征向量中心性的一般化形式。节点 \(i\) 的 Katz 中心性为

\[x_i = \alpha \sum_{j} A_{ij} x_j + \beta,\]

其中 \(A\) 是图 G 的邻接矩阵,其特征值为 \(\lambda\)

参数 \(\beta\) 控制初始中心性,并且

\[\alpha < \frac{1}{\lambda_{\max}}.\]

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

可以通过参数 \(\beta\) 为直接邻居提供额外权重。然而,与远距离邻居的连接会通过衰减因子 \(\alpha\) 受到惩罚,该因子应严格小于邻接矩阵最大特征值的倒数,以确保正确计算 Katz 中心性。更多信息请参见 [1]

Parameters:
G

一个 NetworkX 图。

alpha浮点数, 可选 (默认=0.1)

衰减因子

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

赋予直接邻居的权重。如果不是标量,字典必须为每个节点提供一个值。

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

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

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

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

nstart字典, 可选

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

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

如果为 True,则对结果值进行归一化。

weightNone 或字符串, 可选 (默认=None)

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

Returns:
nodes字典

包含节点及其 Katz 中心性值的字典。

Raises:
NetworkXError

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

PowerIterationFailedConvergence

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

Notes

Katz 中心性由 [2] 引入。

该算法使用幂方法找到与邻接矩阵的最大特征值对应的特征向量。参数 alpha 应严格小于邻接矩阵最大特征值的倒数,以确保算法收敛。 您可以使用 max(nx.adjacency_spectrum(G)) 获取邻接矩阵的最大特征值 \(\lambda_{\max}\)。 迭代将在 max_iter 次迭代后停止,或者达到 number_of_nodes(G) * tol 的误差容限。

对于强连通图,当 \(\alpha \to 1/\lambda_{\max}\)\(\beta > 0\) 时,Katz 中心性接近特征向量中心性的结果。

对于有向图,该算法找到“左”特征向量,对应于图中的入边。对于出边 Katz 中心性,首先使用 G.reverse() 反转图。

References

[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

Examples

>>> import math
>>> G = nx.path_graph(4)
>>> phi = (1 + math.sqrt(5)) / 2.0  # 邻接矩阵的最大特征值
>>> 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

Additional backends implement this function

graphblas : OpenMP-enabled sparse linear algebra backend.