工具
用于图分析的各种工具。
转换图
- 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 – 邻接矩阵。
weighted – 如果为
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 [source]
获取节点的邻居。
如果图是有向的,则返回后继者向量。设置
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 [source]
构建标签分配的二进制矩阵,形状为 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 [source]
从成员矩阵(n_samples x n_labels)获取标签。没有标签的样本获取 -1。
- 参数:
成员关系 – 成员关系矩阵。
- 返回值:
标签 – 标签(成员关系矩阵的列索引)。
- 返回类型:
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])