實用程式
各種類型用於圖形分析的工具。
轉換圖形
- 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.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])