實用程式

各種類型用於圖形分析的工具。

轉換圖形

sknetwork.utils.directed2undirected(adjacency: csr_matrix | SparseLR, weighted: bool = True) csr_matrix | SparseLR[source]

與某個有向圖相關聯的無向圖的鄰接矩陣。

新鄰接矩陣變成

\(A+A^T\)(預設)

\(\max(A,A^T) > 0\)(二進制)

如果初始鄰接矩陣 \(A\) 為二進制,雙向邊會有權重 2(第一個方法,預設)或 1(第二個方法)。

參數:
  • adjacency – 鄰接矩陣。

  • 加權 – 如果 True,傳回每個邊緣雙向的權重總和。

傳回值:

新的鄰接矩陣(格式與輸入相同)。

傳回型別:

new_adjacency

sknetwork.utils.bipartite2undirected(biadjacency: csr_matrix | SparseLR) csr_matrix | SparseLR[來源]

由其鄰接矩陣定義的二部圖的鄰接矩陣。

傳回的鄰接矩陣是

\(A = \begin{bmatrix} 0 & B \\ B^T & 0 \end{bmatrix}\)

其中 \(B\) 為二部圖的鄰接矩陣。

參數:

biadjacency – 圖的鄰接矩陣。

傳回值:

鄰接矩陣(格式與輸入相同)。

傳回型別:

adjacency

sknetwork.utils.bipartite2directed(biadjacency: csr_matrix | SparseLR) csr_matrix | SparseLR[來源]

與二部圖(邊緣從一處延伸到另一處)相關的導向圖的鄰接矩陣。

傳回的鄰接矩陣是

\(A = \begin{bmatrix} 0 & B \\ 0 & 0 \end{bmatrix}\)

其中 \(B\) 為鄰接矩陣。

參數:

biadjacency – 圖的鄰接矩陣。

傳回值:

鄰接矩陣(格式與輸入相同)。

傳回型別:

adjacency

鄰近區域

sknetwork.utils.get_degrees(input_matrix: csr_matrix, transpose: bool = False) ndarray[source]

取得圖形的度數向量。

如果圖形是有向的,則回傳出度(繼承者數量)。設定 transpose=True 以取得入度(前置者數量)。

針對邊鄰接矩陣,回傳列的度數。設定 transpose=True 以取得欄的度數。

參數:
  • input_matrix (sparse.csr_matrix) – 鄰接或雙邊鄰接矩陣。

  • transpose – 如果 True,轉置輸入矩陣。

傳回值:

degrees – 度數陣列。

傳回型別:

np.ndarray

範例

>>> from sknetwork.data import house
>>> adjacency = house()
>>> get_degrees(adjacency)
array([2, 3, 2, 2, 3], dtype=int32)
sknetwork.utils.get_weights(input_matrix: csr_matrix, transpose: bool = False) ndarray[source]

取得圖形節點的權重向量。如果圖形未加權,則回傳度數向量。

如果圖形是有向的,則回傳出度(外出連結的總權重)。設定 transpose=True 以取得入度(進入連結的總權重)。

針對邊鄰接矩陣,回傳列的權重。設定 transpose=True 以取得欄的權重。

參數:
  • input_matrix (sparse.csr_matrix) – 鄰接或雙邊鄰接矩陣。

  • transpose – 如果 True,轉置輸入矩陣。

傳回值:

weights – 權重陣列。

傳回型別:

np.ndarray

範例

>>> from sknetwork.data import house
>>> adjacency = house()
>>> get_weights(adjacency)
array([2., 3., 2., 2., 3.])
sknetwork.utils.get_neighbors(input_matrix: csr_matrix, node: int, transpose: bool = False) ndarray[原始碼]

取得節點的鄰居。

如果圖是定向的,會傳回後繼節點的向量。設定 transpose=True 來取得前節點。

對於相鄰矩陣,會傳回列節點的鄰居。設定 transpose=True 來取得欄節點的鄰居。

參數:
  • input_matrix (sparse.csr_matrix) – 鄰接或雙邊鄰接矩陣。

  • node (int) – 目標節點。

  • transpose – 如果 True,轉置輸入矩陣。

傳回值:

neighbors – 目標節點鄰居的陣列。

傳回型別:

np.ndarray

範例

>>> from sknetwork.data import house
>>> adjacency = house()
>>> get_neighbors(adjacency, node=0)
array([1, 4], dtype=int32)

隸屬矩陣

sknetwork.utils.get_membership(labels: ~numpy.ndarray, dtype=<class 'bool'>, n_labels: int | None = None) csr_matrix[原始碼]

建立標籤配置的二元矩陣,形狀為 n_samples x n_labels。負標籤會被忽略。

參數:
  • labels – 各節點的標籤(整數)。

  • dtype – 輸出的類型。預設為布林值。

  • n_labels (int) – 標籤數量。

傳回值:

membership – 標籤配置的二元矩陣。

傳回型別:

sparse.csr_matrix

範例

>>> from sknetwork.utils import get_membership
>>> labels = np.array([0, 0, 1, 2])
>>> membership = get_membership(labels)
>>> membership.toarray().astype(int)
array([[1, 0, 0],
       [1, 0, 0],
       [0, 1, 0],
       [0, 0, 1]])
sknetwork.utils.from_membership(membership: csr_matrix) ndarray[原始碼]

從成員矩陣中取得標籤 (n_samples x n_labels)。沒有標籤的樣本會取得 -1。

參數:

membership – 成員矩陣。

傳回值:

labels – 標籤 (成員矩陣的欄位索引)。

傳回型別:

np.ndarray

範例

>>> from scipy import sparse
>>> from sknetwork.utils import from_membership
>>> membership = sparse.eye(3).tocsr()
>>> labels = from_membership(membership)
>>> labels
array([0, 1, 2])

TF-IDF

sknetwork.utils.get_tfidf(count_matrix: csr_matrix)[原始碼]

從稀疏格式的計數矩陣中取得詞頻-逆向文件頻率。

參數:

count_matrix (sparse.csr_matrix) – 計數矩陣,形狀 (n_documents, n_words)。

傳回值:

tf_idf – 詞頻-逆向文件頻率矩陣,形狀 (n_documents, n_words)。

傳回型別:

sparse.csr_matrix

參考

https://en.wikipedia.org/wiki/Tfidf