排名

節點排名演算法。

屬性 scores_ 為圖表中每個節點分配一個重要性分數。

PageRank

類別 sknetwork.ranking.PageRank(阻尼因子: float = 0.85, 求解器: str = 'piteration', n_iter: int = 10, 容差: float = 1e-06)[原始碼]

每個節點的 PageRank,對應於隨機漫步的拜訪頻率。

隨機漫步會以固定的機率重新開始。重新開始的分佈可以由使用者自訂。此變異稱為個人化 PageRank。

參數:
  • 阻尼因子 (float) – 繼續隨機漫步的機率。

  • 求解器 (str) –

    • 'piteration',使用冪迭代運算給定的迭代次數。

    • 'diteration',使用非同步平行擴散運算給定的迭代次數。

    • 'lanczos',使用特徵值求解器,容差為給定值。

    • 'bicgstab',使用雙共軛梯度穩定化方法,容差為給定值。

    • 'RH',使用 Ruffini-Horner 多項式評估。

    • 'push',使用基於推動的演算法,容差為給定值

  • n_iter (int) – 某些求解器的迭代次數。

  • 容差 (float) – 某些求解器的收斂容差。

變數:
  • 計分 (np.ndarray) – 每個節點的 PageRank 計分。

  • 列計分 (np.ndarray) – 二部圖的列計分。

  • 欄計分 (np.ndarray) – 二部圖的欄計分。

範例

>>> from sknetwork.ranking import PageRank
>>> from sknetwork.data import house
>>> pagerank = PageRank()
>>> adjacency = house()
>>> weights = {0: 1}
>>> scores = pagerank.fit_predict(adjacency, weights)
>>> np.round(scores, 2)
array([0.29, 0.24, 0.12, 0.12, 0.24])

參考

Page、L. 、Brin、S. 、Motwani、R. 、&Winograd、T. (1999)。PageRank 引文評分:為網路帶來秩序。史丹佛大學資訊實驗室。

fit(input_matrix: csr_matrix | ndarray, weights: dict | ndarray | None = None, weights_row: dict | ndarray | None = None, weights_col: dict | ndarray | None = None, force_bipartite: bool = False) PageRank[source]

計算每個節點的 PageRank。

參數:
  • input_matrix (sparse.csr_matrix, np.ndarray) – 圖的鄰接矩陣或雙鄰接矩陣。

  • weights (np.ndarray, dict) – 個人化 PageRank 重新啟動分佈的權重。如果為 None,則使用均勻分佈(無個人化,預設)。

  • weights_row (np.ndarray, dict) – 個人化 PageRank 重啟分佈於列的權重。應用於雙部圖。若 weights_row 與 weights_col 皆為 None (預設值),則採用列的均勻分佈。

  • weights_col (np.ndarray, dict) – 個人化 PageRank 重啟分佈於行的權重。應用於雙部圖。

  • force_bipartite (bool) – 若為 True,則將輸入矩陣視為雙部圖的雙鄰接矩陣。

傳回:

self

傳回類型:

PageRank

fit_predict(*args, **kwargs) ndarray

依照資料擬合演算法並傳回評分。與 fit 方法相同的參數。

傳回:

scores – 評分。

傳回類型:

np.ndarray

get_params()

將參數作為字典取得。

傳回:

params – 演算法參數。

傳回類型:

dict

predict(columns: bool = False) ndarray

傳回演算法預測的評分。

參數:

columns (bool) – 若為 True,則傳回列的預測值。

傳回:

scores – 評分。

傳回類型:

np.ndarray

set_params(params: dict) Algorithm

設定演算法參數。

參數:

params (dict) – 演算法參數。

傳回:

self

傳回類型:

Algorithm

Katz

類別 sknetwork.ranking.Katz(阻尼因子: float = 0.5, 路徑長度: int = 4)[程式碼]

Katz 中心性,定義為

\(\sum_{k=1}^K\alpha^k(A^k)^T\mathbf{1}\)

其中 \(A\) 為鄰接矩陣,\(\alpha\) 為阻尼因子且 \(K\) 為路徑長度。

參數:
  • 阻尼因子 (float) – 路徑貢獻的阻尼因子。

  • 路徑長度 (int) – 路徑的最大長度。

變數:
  • 分數 (np.ndarray) – 各個節點的分數。

  • 列計分 (np.ndarray) – 二部圖的列計分。

  • 欄計分 (np.ndarray) – 二部圖的欄計分。

範例

>>> from sknetwork.data.toy_graphs import house
>>> adjacency = house()
>>> katz = Katz()
>>> scores = katz.fit_predict(adjacency)
>>> np.round(scores, 2)
array([6.5 , 8.25, 5.62, 5.62, 8.25])

參考

Katz, L. (1953). A new status index derived from sociometric analysis. Psychometrika, 18(1), 39-43.

fit(input_matrix: csr_matrix | ndarray | LinearOperator) Katz[程式碼]

Katz 中心性。

參數:

input_matrix – 圖形的鄰接矩陣或雙鄰接矩陣。

傳回:

self

傳回類型:

Katz

fit_predict(*args, **kwargs) ndarray

依照資料擬合演算法並傳回評分。與 fit 方法相同的參數。

傳回:

scores – 評分。

傳回類型:

np.ndarray

get_params()

將參數作為字典取得。

傳回:

params – 演算法參數。

傳回類型:

dict

predict(columns: bool = False) ndarray

傳回演算法預測的評分。

參數:

columns (bool) – 若為 True,則傳回列的預測值。

傳回:

scores – 評分。

傳回類型:

np.ndarray

set_params(params: dict) Algorithm

設定演算法參數。

參數:

params (dict) – 演算法參數。

傳回:

self

傳回類型:

Algorithm

HITS

class sknetwork.ranking.HITS(solver: str | SVDSolver = 'lanczos')[來源]

每個節點的樞紐和權威分數。對於二部圖,樞紐分數計算於行上而權威分數計算於欄上。

參數:

solver ('lanczos' (預設值,Lanczos 演算法) 或 SVDSolver (自訂求解器)) – 使用哪個求解器。

變數:
  • scores (np.ndarray) – 每個節點的樞紐分數。

  • scores_row (np.ndarray) – 二部圖每個行的樞紐分數。

  • scores_col (np.ndarray) – 二部圖每個欄的權威分數。

範例

>>> from sknetwork.ranking import HITS
>>> from sknetwork.data import star_wars
>>> hits = HITS()
>>> biadjacency = star_wars()
>>> scores = hits.fit_predict(biadjacency)
>>> np.round(scores, 2)
array([0.5 , 0.23, 0.69, 0.46])

參考

Kleinberg, J. M. (1999). Authoritative sources in a hyperlinked environment. Journal of the ACM, 46(5), 604-632.

fit(adjacency: csr_matrix | ndarray) HITS[來源]

使用譜式方法計算 HITS 演算法。

參數:

adjacency – 圖的鄰接或鄰接二部矩陣。

傳回:

self

傳回類型:

HITS

預測_擬合(*args, **kwargs) ndarray

依照資料擬合演算法並傳回評分。與 fit 方法相同的參數。

傳回:

scores – 評分。

傳回類型:

np.ndarray

取得_參數()

將參數作為字典取得。

傳回:

params – 演算法參數。

傳回類型:

dict

預測(欄位: 布林值 = ) ndarray

傳回演算法預測的評分。

參數:

columns (bool) – 若為 True,則傳回列的預測值。

傳回:

scores – 評分。

傳回類型:

np.ndarray

設定_參數(參數: 字典) 演算法

設定演算法參數。

參數:

params (dict) – 演算法參數。

傳回:

self

傳回類型:

Algorithm

中介中心性

類別 sknetwork.ranking.中介中心性(正規化: 布林值 = )

中介中心性,基於 Brandes 的演算法。

變數:

分數 (np.ndarray) – 各個節點的中介中心性值

範例

>>> from sknetwork.ranking import Betweenness
>>> from sknetwork.data.toy_graphs import bow_tie
>>> betweenness = Betweenness()
>>> adjacency = bow_tie()
>>> scores = betweenness.fit_transform(adjacency)
>>> scores
array([4., 0., 0., 0., 0.])

參考

Brandes, Ulrik (2001)。針對中介中心性的一種較快演算法。數學和社會學期刊。

擬合(鄰接矩陣: csr_matrix | ndarray) 中介中心性

對資料進行演算法擬合。

fit_predict(*args, **kwargs) ndarray

依照資料擬合演算法並傳回評分。與 fit 方法相同的參數。

傳回:

scores – 評分。

傳回類型:

np.ndarray

get_params()

將參數作為字典取得。

傳回:

params – 演算法參數。

傳回類型:

dict

predict(columns: bool = False) ndarray

傳回演算法預測的評分。

參數:

columns (bool) – 若為 True,則傳回列的預測值。

傳回:

scores – 評分。

傳回類型:

np.ndarray

set_params(params: dict) Algorithm

設定演算法參數。

參數:

params (dict) – 演算法參數。

傳回:

self

傳回類型:

Algorithm

Closeness centrality

class sknetwork.ranking.Closeness(method: str = 'exact', tol: float = 0.1)[source]

在連接圖中各節點的接近性中心性,對應於從該節點到所有其他節點的最短路徑的平均長度。排名由接近性中心性決定。

參數:
  • method – 指明結果是否應為精確或近似。

  • tol (float) – 若 method=='approximate',每個評分條目的允許容差。

變數:

scores (np.ndarray) – 每個節點的接近性中心性。

範例

>>> from sknetwork.ranking import Closeness
>>> from sknetwork.data import cyclic_digraph
>>> closeness = Closeness()
>>> adjacency = cyclic_digraph(3)
>>> scores = closeness.fit_predict(adjacency)
>>> np.round(scores, 2)
array([0.67, 0.67, 0.67])

參考

Eppstein,D.,& Wang,J.(2001 年 1 月)。中心性的快速近似。在第十二屆 ACM-SIAM 離散演算法研討會論文集(第 228-229 頁)中。工業與應用數學學會。

fit(鄰接矩陣: csr_matrix | ndarray) Closeness[來源]

連通圖的接近中心性。

參數:

鄰接矩陣 – 圖的鄰接矩陣。

傳回:

self

傳回類型:

Closeness

fit_predict(*args, **kwargs) ndarray

依照資料擬合演算法並傳回評分。與 fit 方法相同的參數。

傳回:

scores – 評分。

傳回類型:

np.ndarray

get_params()

將參數作為字典取得。

傳回:

params – 演算法參數。

傳回類型:

dict

predict(欄位: bool = False) ndarray

傳回演算法預測的評分。

參數:

columns (bool) – 若為 True,則傳回列的預測值。

傳回:

scores – 評分。

傳回類型:

np.ndarray

set_params(params: dict) Algorithm

設定演算法參數。

參數:

params (dict) – 演算法參數。

傳回:

self

傳回類型:

Algorithm

後處理

sknetwork.ranking.top_k(scores: ndarray, k: int = 1, sort: bool = True)[source]

傳回最高值前 k 個元素的索引。

參數:
  • scores (np.ndarray) – 值陣列。

  • k (int) – 要傳回的元素數。

  • sort (bool) – 如果為 True,依值遞減順序排列索引(最高值元素擺在最前面)。

範例

>>> top_k([1, 3, 2], k=2)
array([1, 2])