数据
用于加载和保存图的工具。
边列表
- sknetwork.data.from_edge_list(edge_list: ndarray | List[Tuple], directed: bool = False, bipartite: bool = False, weighted: bool = True, reindex: bool = False, shape: tuple | None = None, sum_duplicates: bool = True, matrix_only: bool | None = None) Dataset | csr_matrix [source]
从边列表中加载图。
- 参数:
edge_list (Union[np.ndarray, List[Tuple]]) – 要转换的边列表,以大小为 (n, 2) 或 (n, 3) 的 NumPy 数组或长度为 2 或 3 的元组列表形式给出。
directed (bool) – 如果
True
,则将图视为有向图。bipartite (bool) – 如果
True
,则返回一个二部图矩阵。weighted (bool) – 如果
True
,则返回一个加权图。reindex (bool) – 如果
True
,则重新索引节点并返回原始节点索引作为名称。如果节点不是整数,则强制重新索引。shape (tuple) – 邻接矩阵或二部图矩阵的形状。如果未指定或重新索引节点,则形状是最小与节点索引兼容的形状。
sum_duplicates (bool) – 如果
True
(默认),则对重复边的权重求和。否则,每个边的权重为该边首次出现时的权重。matrix_only (bool) – 如果
True
,则只返回邻接矩阵或二部图矩阵。否则,返回一个带有图属性(例如,节点名称)的Dataset
对象。如果未指定(默认),则选择最合适的格式。
- 返回值:
图
- 返回值类型:
Dataset
(包括节点名称)或稀疏矩阵
示例
>>> edges = [(0, 1), (1, 2), (2, 0)] >>> adjacency = from_edge_list(edges) >>> adjacency.shape (3, 3) >>> edges = [('Alice', 'Bob'), ('Bob', 'Carol'), ('Carol', 'Alice')] >>> graph = from_edge_list(edges) >>> adjacency = graph.adjacency >>> adjacency.shape (3, 3) >>> print(graph.names) ['Alice' 'Bob' 'Carol']
邻接表
- sknetwork.data.from_adjacency_list(adjacency_list: List[List] | Dict[str, List], directed: bool = False, bipartite: bool = False, weighted: bool = True, reindex: bool = False, shape: tuple | None = None, sum_duplicates: bool = True, matrix_only: bool | None = None) Dataset | csr_matrix [source]
从邻接表中加载图。
- 参数:
adjacency_list (Union[List[List], Dict[str, List]]) – 邻接表(每个节点的邻居)或字典(节点:邻居)。
directed (bool) – 如果
True
,则将图视为有向图。bipartite (bool) – 如果
True
,则返回一个二部图矩阵。weighted (bool) – 如果
True
,则返回一个加权图。reindex (bool) – 如果
True
,则重新索引节点并返回原始节点索引作为名称。如果节点不是整数,则强制重新索引。shape (tuple) – 邻接矩阵或二部图矩阵的形状。如果未指定或重新索引节点,则形状是最小与节点索引兼容的形状。
sum_duplicates (bool) – 如果
True
(默认),则对重复边的权重求和。否则,每个边的权重为该边首次出现时的权重。matrix_only (bool) – 如果
True
,则只返回邻接矩阵或二部图矩阵。否则,返回一个带有图属性(例如,节点名称)的Dataset
对象。如果未指定(默认),则选择最合适的格式。
- 返回值:
图
- 返回值类型:
Dataset
或稀疏矩阵
示例
>>> edges = [[1, 2], [0, 2, 3], [0, 1]] >>> adjacency = from_adjacency_list(edges) >>> adjacency.shape (4, 4)
文件
查看 教程 以了解如何从数据框导入图。
- sknetwork.data.from_csv(file_path: str, delimiter: str | None = None, sep: str | None = None, comments: str = '#%', data_structure: str | None = None, directed: bool = False, bipartite: bool = False, weighted: bool = True, reindex: bool = False, shape: tuple | None = None, sum_duplicates: bool = True, matrix_only: bool | None = None) Dataset | csr_matrix [source]
从 CSV 或 TSV 文件加载图。可以指定分隔符(例如,对于空格分隔的值,可以使用“ ”)。
- 参数:
file_path (str) – CSV 文件路径。
delimiter (str) – 文件中使用的分隔符。如果未指定,则会猜测。
sep (str) – 分隔符的别名。
comments (str) – 注释行的字符。
data_structure (str) – 如果为“edge_list”,则将文件每一行视为一条边(大小为 2 或 3 的元组)。如果为“adjacency_list”,则将文件每一行视为邻接列表(邻居列表,按节点索引的顺序排列;空行表示没有邻居)。如果为“adjacency_dict”,则将文件每一行视为一个邻接字典,其中第一个列是键(节点:邻居列表)。如果为
None
(默认),则会根据文件的首行猜测数据结构。directed (bool) – 如果
True
,则将图视为有向图。bipartite (bool) – 如果为
True
,则返回一个形状为 (n1, n2) 的双邻接矩阵。weighted (bool) – 如果为
True
,则返回一个加权图(例如,计算每条边的出现次数)。reindex (bool) – 如果
True
,则重新索引节点并返回原始节点索引作为名称。如果节点不是整数,则强制重新索引。shape (tuple) – 邻接矩阵或二部图矩阵的形状。如果未指定或重新索引节点,则形状是最小与节点索引兼容的形状。
sum_duplicates (bool) – 如果
True
(默认),则对重复边的权重求和。否则,每个边的权重为该边首次出现时的权重。matrix_only (bool) – 如果
True
,则只返回邻接矩阵或二部图矩阵。否则,返回一个带有图属性(例如,节点名称)的Dataset
对象。如果未指定(默认),则选择最合适的格式。
- 返回值:
图
- 返回值类型:
Dataset
或稀疏矩阵
- sknetwork.data.from_graphml(file_path: str, weight_key: str = 'weight', max_string_size: int = 512) Dataset [source]
从 GraphML 文件加载图。
不支持超边和嵌套图。
- 参数:
file_path (str) – GraphML 文件路径。
weight_key (str) – 用作边权值的键
max_string_size (int) – 数据字符串特征的最大大小
- 返回值:
data – 使用 CSR 矩阵作为邻接矩阵的数据集,存储在 Dataset 中。
- 返回值类型:
Dataset
Datasets
- sknetwork.data.load_netset(name: str | None = None, data_home: str | Path | None = None, verbose: bool = True) Dataset | None [source]
从 NetSet 集合 加载数据集。
- 参数:
name (str) – 数据集的名称(全部小写)。例如,“openflights”、“cinema” 和 “wikivitals”。
data_home (str 或
pathlib.Path
) – 用于数据集存储的文件夹。此文件夹必须为空或包含其他文件夹(数据集);文件将被删除。verbose (bool) – 启用详细程度。
- 返回值:
dataset – 返回的数据集。
- 返回值类型:
Dataset
- sknetwork.data.load_konect(name: str, data_home: str | Path | None = None, auto_numpy_bundle: bool = True, verbose: bool = True) Dataset [source]
从 Konect 数据库 加载数据集。
- 参数:
name (str) – 在 Konect 网站上指定的数据集名称(例如,对于 Zachary Karate club 数据集,对应的名称为
'ucidata-zachary'
)。data_home (str 或
pathlib.Path
) – 用于数据集存储的文件夹。auto_numpy_bundle (bool) – 数据集是否应该以默认格式存储(False)或使用 Numpy 文件以便后续更快速地访问数据集(True)。
verbose (bool) – 启用详细程度。
- 返回值:
dataset –
具有以下属性的对象
adjacency 或 biadjacency: 数据集的邻接/双邻接矩阵
meta: 包含 Konect 指定的元数据的字典
Konect 指定的每个属性(ent.* 文件)
- 返回值类型:
Dataset
Notes
Dataset 类的属性 meta 用于存储有关数据集的信息(如果存在)。在任何情况下,meta 都有属性 name,如果未给出,则等于传递给此函数的数据集的名称。
References
Kunegis, J. (2013, May). Konect: the Koblenz network collection. In Proceedings of the 22nd International Conference on World Wide Web (pp. 1343-1350).
您也可以在 NetRep 上找到一些数据集。
Toy graphs
- sknetwork.data.house(metadata: bool = False) csr_matrix | Dataset [source]
房屋图。
无向图
5 个节点,6 条边
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import house >>> adjacency = house() >>> adjacency.shape (5, 5)
- sknetwork.data.bow_tie(metadata: bool = False) csr_matrix | Dataset [source]
领结图。
无向图
5 个节点,6 条边
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import bow_tie >>> adjacency = bow_tie() >>> adjacency.shape (5, 5)
- sknetwork.data.karate_club(metadata: bool = False) csr_matrix | Dataset [source]
空手道俱乐部图。
无向图
34 个节点,78 条边
2 个标签
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(标签,位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import karate_club >>> adjacency = karate_club() >>> adjacency.shape (34, 34)
References
Zachary 的空手道俱乐部图 https://en.wikipedia.org/wiki/Zachary%27s_karate_club
- sknetwork.data.miserables(metadata: bool = False) csr_matrix | Dataset [source]
维克多·雨果的小说《悲惨世界》中人物的共现图。
无向图
77 个节点,508 条边
人物姓名
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(姓名,位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import miserables >>> adjacency = miserables() >>> adjacency.shape (77, 77)
- sknetwork.data.painters(metadata: bool = False) csr_matrix | Dataset [source]
维基百科上一些著名画家之间链接的图。
有向图
14 个节点,50 条边
画家姓名
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(姓名,位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import painters >>> adjacency = painters() >>> adjacency.shape (14, 14)
- sknetwork.data.star_wars(metadata: bool = False) csr_matrix | Dataset [source]
连接一些星球大战反派及其出现的电影的二部图。
二部图
7 个节点(4 个反派,3 部电影),8 条边
反派和电影的名称
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
二部邻接矩阵或图 – 带有元数据(姓名)的二部邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import star_wars >>> biadjacency = star_wars() >>> biadjacency.shape (4, 3)
- sknetwork.data.movie_actor(metadata: bool = False) csr_matrix | Dataset [source]
连接电影和一些主演的演员的二部图。
二部图
32 个节点(15 部电影,17 位演员),43 条边
电影(行)和演员(列)的名称
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
二部邻接矩阵或数据集 – 带有元数据(电影和演员名称)的二部邻接矩阵或数据集。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import movie_actor >>> biadjacency = movie_actor() >>> biadjacency.shape (15, 17)
- sknetwork.data.art_philo_science(metadata: bool = False) csr_matrix | Dataset [source]
维基百科上 30 篇文章之间的链接(10 位艺术家,10 位哲学家,10 位科学家)。
有向图
30 个节点,240 条边
文章名称
元数据包含这些文章摘要中 11 个单词的出现情况。
- 参数:
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。- 返回值:
邻接矩阵或图 – 带有元数据(姓名,位置,标签,姓名标签,二部邻接矩阵,姓名列)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import art_philo_science >>> adjacency = art_philo_science() >>> adjacency.shape (30, 30)
模型
- sknetwork.data.linear_graph(n: int = 3, metadata: bool = False) csr_matrix | Dataset [source]
线性图(无向)。
- 参数:
n (int) – 节点数量。
metadata (bool) – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import linear_graph >>> adjacency = linear_graph(5) >>> adjacency.shape (5, 5)
- sknetwork.data.linear_digraph(n: int = 3, metadata: bool = False) csr_matrix | Dataset [source]
线性图(有向)。
- 参数:
n (int) – 节点数量。
metadata (bool) – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import linear_digraph >>> adjacency = linear_digraph(5) >>> adjacency.shape (5, 5)
- sknetwork.data.cyclic_graph(n: int = 3, metadata: bool = False) csr_matrix | Dataset [source]
循环图(无向)。
- 参数:
n (int) – 节点数量。
metadata (bool) – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import cyclic_graph >>> adjacency = cyclic_graph(5) >>> adjacency.shape (5, 5)
- sknetwork.data.cyclic_digraph(n: int = 3, metadata: bool = False) csr_matrix | Dataset [source]
循环图(有向)。
- 参数:
n (int) – 节点数量。
metadata (bool) – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import cyclic_digraph >>> adjacency = cyclic_digraph(5) >>> adjacency.shape (5, 5)
- sknetwork.data.grid(n1: int = 10, n2: int = 10, metadata: bool = False) csr_matrix | Dataset [source]
网格(无向)。
- 参数:
n1 (int) – 网格维度。
n2 (int) – 网格维度。
metadata (bool) – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import grid >>> adjacency = grid(10, 5) >>> adjacency.shape (50, 50)
- sknetwork.data.erdos_renyi(n: int = 20, p: float = 0.3, directed: bool = False, self_loops: bool = False, seed: int | None = None) csr_matrix [source]
Erdos-Renyi 图。
- 参数:
n – 节点数量。
p – 节点之间连接的概率。
directed – 如果为
True
,则返回有向图。self_loops – 如果为
True
,则允许自循环。seed – 随机生成器的种子(可选)。
- 返回值:
邻接矩阵 – 邻接矩阵。
- 返回值类型:
sparse.csr_matrix
示例
>>> from sknetwork.data import erdos_renyi >>> adjacency = erdos_renyi(7) >>> adjacency.shape (7, 7)
References
Erdős, P., Rényi, A. (1959). On Random Graphs. Publicationes Mathematicae.
- sknetwork.data.block_model(sizes: Iterable, p_in: float | list | ndarray = 0.2, p_out: float = 0.05, directed: bool = False, self_loops: bool = False, metadata: bool = False, seed: int | None = None) csr_matrix | Dataset [source]
随机块模型。
- 参数:
sizes – 块大小。
p_in – 块内连接的概率。
p_out – 块间连接的概率。
directed – 如果为
True
,则返回有向图。self_loops – 如果为
True
,则允许自循环。metadata – 如果为
True
,则返回一个带有标签的 Dataset 对象。seed – 随机生成器的种子(可选)。
- 返回值:
邻接矩阵或图 – 邻接矩阵或带有元数据(标签)的图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import block_model >>> sizes = np.array([4, 5]) >>> adjacency = block_model(sizes) >>> adjacency.shape (9, 9)
References
Airoldi, E., Blei, D., Feinberg, S., Xing, E. (2007). Mixed membership stochastic blockmodels. Journal of Machine Learning Research.
- sknetwork.data.albert_barabasi(n: int = 100, degree: int = 3, directed: bool = False, seed: int | None = None) csr_matrix [source]
Albert-Barabasi 模型。
- 参数:
n (int) – 节点数量。
degree (int) – 入度节点的度数(小于 n)。
directed (bool) – 如果为
True
,则返回有向图。seed – 随机生成器的种子(可选)。
- 返回值:
邻接矩阵 – 邻接矩阵。
- 返回值类型:
sparse.csr_matrix
示例
>>> from sknetwork.data import albert_barabasi >>> adjacency = albert_barabasi(30, 3) >>> adjacency.shape (30, 30)
References
Albert, R., Barabási, L. (2002). Statistical mechanics of complex networks Reviews of Modern Physics.
- sknetwork.data.watts_strogatz(n: int = 100, degree: int = 6, prob: float = 0.05, seed: int | None = None, metadata: bool = False) csr_matrix | Dataset [source]
Watts-Strogatz 模型。
- 参数:
n – 节点数量。
degree – 节点的初始度数。
prob – 边缘修改的概率。
seed – 随机生成器的种子(可选)。
metadata – 如果为
True
,则返回一个包含元数据的 Dataset 对象。
- 返回值:
邻接矩阵或图 – 带有元数据(位置)的邻接矩阵或图。
- 返回值类型:
Union[sparse.csr_matrix, Dataset]
示例
>>> from sknetwork.data import watts_strogatz >>> adjacency = watts_strogatz(30, 4, 0.02) >>> adjacency.shape (30, 30)
References
Watts, D., Strogatz, S. (1998). Collective dynamics of small-world networks, Nature.
保存
- sknetwork.data.save(folder: str | Path, data: csr_matrix | Dataset)[source]
将当前目录中的数据集或 CSR 矩阵保存到一组 Numpy 和 Pickle 文件中,以便更快地进行后续加载。支持的属性类型包括稀疏矩阵、NumPy 数组、字符串和 Dataset 对象。
- 参数:
folder (str 或
pathlib.Path
) – 捆绑文件夹的名称。data (Union[sparse.csr_matrix, Dataset]) – 要保存的数据。
示例
>>> from sknetwork.data import save >>> dataset = Dataset() >>> dataset.adjacency = sparse.csr_matrix(np.random.random((3, 3)) < 0.5) >>> dataset.names = np.array(['a', 'b', 'c']) >>> save('dataset', dataset) >>> 'dataset' in listdir('.') True
- sknetwork.data.load(folder: str | Path)[source]
从当前目录中加载先前创建的捆绑包中的数据集(
save
的逆函数)。- 参数:
folder (str) – 捆绑包文件夹的名称。
- 返回值:
data – 数据。
- 返回值类型:
Dataset
示例
>>> from sknetwork.data import save >>> dataset = Dataset() >>> dataset.adjacency = sparse.csr_matrix(np.random.random((3, 3)) < 0.5) >>> dataset.names = np.array(['a', 'b', 'c']) >>> save('dataset', dataset) >>> dataset = load('dataset') >>> print(dataset.names) ['a' 'b' 'c']