當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。