数据

用于加载和保存图的工具。

边列表

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

具有以下属性的对象

  • adjacencybiadjacency: 数据集的邻接/双邻接矩阵

  • 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']