資料

用於載入和儲存圖形的工具。

邊緣串列

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[原始碼]

從邊緣清單載入圖形。

參數:
  • edge_list (Union[np.ndarray, List[Tuple]]) - 要轉換的邊緣清單,表示為大小為 (n, 2) 或 (n, 3) 的 NumPy 陣列,或長度為 2 或 3 的元組清單。

  • directed (布林) – 如果 True,則將圖形視為有向的。

  • bipartite (布林) – 如果 True,則傳回一個二鄰接矩陣。

  • weighted (布林) – 如果 True,則傳回一個加權圖形。

  • reindex (布林) – 如果 True,則重新索引節點並傳回原始節點索引作為名稱。如果節點不是整數,則執行重新索引。

  • shape (元組) – 鄰接或二鄰接矩陣的形狀。未指定或節點重新索引時,該形狀是與節點索引最相容的小形狀。

  • sum_duplicates (布林) – 如果 True (預設),則將重複邊緣的權重加總。否則,每個邊緣的權重都是這個邊緣第一次出現時的權重。

  • matrix_only (布林) – 如果 True,則僅傳回鄰接或二鄰接矩陣。否則,傳回一個 資料集 物件,包含圖形屬性 (例如,節點名稱)。未指定 (預設) 時,選取最合適的格式。

傳回:

圖形

傳回類型:

資料集 (包括節點名稱) 或稀疏矩陣

範例

>>> 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: 列表[列表] | 字典[字串, 列表], 有向: 布林 = , 二部: 布林 = , 帶權重: 布林 = , 重新索引: 布林 = , 形狀: 元組 | = , 合併重複項: 布林 = , 僅矩陣: 布林 | = ) 資料集 | csr_矩陣[來源程式碼]

從鄰接清單載入圖表。

參數:
  • 鄰接清單 (聯集[清單[清單], 字典[字串, 清單]]) – 鄰接清單 (每個節點的鄰居) 或字典 (節點:鄰居)。

  • directed (布林) – 如果 True,則將圖形視為有向的。

  • bipartite (布林) – 如果 True,則傳回一個二鄰接矩陣。

  • weighted (布林) – 如果 True,則傳回一個加權圖形。

  • reindex (布林) – 如果 True,則重新索引節點並傳回原始節點索引作為名稱。如果節點不是整數,則執行重新索引。

  • shape (元組) – 鄰接或二鄰接矩陣的形狀。未指定或節點重新索引時,該形狀是與節點索引最相容的小形狀。

  • sum_duplicates (布林) – 如果 True (預設),則將重複邊緣的權重加總。否則,每個邊緣的權重都是這個邊緣第一次出現時的權重。

  • matrix_only (布林) – 如果 True,則僅傳回鄰接或二鄰接矩陣。否則,傳回一個 資料集 物件,包含圖形屬性 (例如,節點名稱)。未指定 (預設) 時,選取最合適的格式。

傳回:

圖形

傳回類型:

資料集 或稀疏矩陣

範例

>>> 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 (字串) – CSV 檔案的路徑。

  • delimiter (字串) – 檔案中使用的分隔符號。如果未指定,則會猜測。

  • sep (字串) – 分隔符號的別名。

  • comments (字串) – 註解行的字元。

  • data_structure (字串) – 如果為 ‘edge_list’,則將檔案中的每一行視為邊緣 (大小為 2 或 3 的元組)。如果為 ‘adjacency_list’,則將檔案中的每一行視為鄰接清單 (鄰居清單,依節點索引順序;空行表示沒有鄰居)。如果為 ‘adjacency_dict’,則將檔案中的每一行視為鄰接字典,其中鍵為第一欄提供 (節點:鄰居清單)。如果 None (預設值),則會從檔案的前幾行猜測 data_structure。

  • directed (布林) – 如果 True,則將圖形視為有向的。

  • bipartite (布林值) – 如果 True,則傳回形狀為 (n1, n2) 的雙鄰接矩陣。

  • weighted (布林值) – 如果 True,則傳回加權圖形 (例如,計算每個邊緣出現的次數)。

  • reindex (布林) – 如果 True,則重新索引節點並傳回原始節點索引作為名稱。如果節點不是整數,則執行重新索引。

  • shape (元組) – 鄰接或二鄰接矩陣的形狀。未指定或節點重新索引時,該形狀是與節點索引最相容的小形狀。

  • sum_duplicates (布林) – 如果 True (預設),則將重複邊緣的權重加總。否則,每個邊緣的權重都是這個邊緣第一次出現時的權重。

  • matrix_only (布林) – 如果 True,則僅傳回鄰接或二鄰接矩陣。否則,傳回一個 資料集 物件,包含圖形屬性 (例如,節點名稱)。未指定 (預設) 時,選取最合適的格式。

傳回:

圖形

傳回類型:

資料集 或稀疏矩陣

sknetwork.data.from_graphml(file_path: str, weight_key: str = 'weight', max_string_size: int = 512) 資料集[source]

從 GraphML 檔案載入圖形。

不支援超邊緣和巢狀圖形。

參數:
  • file_path (str) – GraphML 檔案的路徑。

  • weight_key (str) – 作為邊緣權重的值的金鑰

  • max_string_size (int) – 資料中字串特徵的最大大小

傳回:

data – 資料集中的資料,以緊縮稀疏矩陣 (CSR) 作為鄰接矩陣。

傳回類型:

資料集

資料集

sknetwork.data.load_netset(name: str | None = None, data_home: str | Path | None = None, verbose: bool = True) Dataset | None[原始程式碼]

NetSet 蒐集 載入資料集。

參數:
  • name (str) – 資料集的名稱(全部小寫)。範例包括「openflights」、「cinema」和「wikivitals」。

  • data_home (str 或 pathlib.Path) – 要用於資料集儲存的資料夾。這個資料夾必須是空的或包含其他資料夾(資料集);檔案會被移除。

  • verbose (bool) – 啟用詳細資訊。

傳回:

dataset – 傳回的資料集。

傳回類型:

資料集

sknetwork.data.load_konect(name: str, data_home: str | Path | None = None, auto_numpy_bundle: bool = True, verbose: bool = True) Dataset[原始碼]

Konect 資料庫載入資料集。

參數:
  • name (字串) – 資料集名稱,正如 Konect 網站所示 (例如 Zachary Karate club 資料集的相應名稱為 'ucidata-zachary')。

  • data_home (字串或 pathlib.Path) – 用於儲存資料集的資料夾。

  • auto_numpy_bundle (布林值) – 資料集是否應儲存在其預設格式 (False) 或使用 Numpy 檔案加速後續存取資料集 (True)。

  • verbose (bool) – 啟用詳細資訊。

傳回:

dataset

具有下列屬性的物件

  • adjacencybiadjacency: 資料集的鄰接矩陣/二部鄰接矩陣

  • meta: 存放 Konect 指定的元資料的字典

  • Konect 指定的每個屬性 (ent.* 檔案)

傳回類型:

資料集

備註

如有,Dataset 類別的屬性 meta 用於儲存資料集的資訊。無論如何,meta 都具有屬性 name,如果沒有指定,則等於傳遞給這個函式的資料集名稱。

參考

Kunegis, J. (2013 年 5 月)。Konect:Koblenz 網路集合。發表於第 22 屆萬維網國際會議議程中 (第 1343-1350 頁)。

你也可以在 NetRep 上找到一些資料集。

玩具圖形

sknetwork.data.house(metadata: bool = False) csr_matrix | Dataset[source]

屋子圖。

  • 無向圖

  • 5 個節點,6 條邊

參數:

metadata - 為 True,傳回有附帶 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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,傳回有附帶 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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,傳回有附帶 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(標籤、位置)的圖形。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import karate_club
>>> adjacency = karate_club()
>>> adjacency.shape
(34, 34)

參考

https://en.wikipedia.org/wiki/Zachary%27s_karate_club Zachary 的空手道社圖形

sknetwork.data.miserables(metadata: 布林 = ) csr_矩陣 | 資料集[來源]

維克多·雨果小說《悲慘世界》中的人物共同出現圖。

  • 無向圖

  • 77 個節點,508 條邊

  • 角色名稱

參數:

metadata - 為 True,傳回有附帶 metadata 的 Dataset 物件。

傳回:

相鄰矩陣或圖 - 帶有中繼資料(名稱、位置)的相鄰矩陣或圖。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import miserables
>>> adjacency = miserables()
>>> adjacency.shape
(77, 77)
sknetwork.data.painters(metadata: 布林 = ) csr_矩陣 | 資料集[來源]

維基百科上一些著名畫家之間的連結圖。

  • 有向圖

  • 14 個節點,50 條邊

  • 畫家名稱

參數:

metadata - 為 True,傳回有附帶 metadata 的 Dataset 物件。

傳回:

相鄰矩陣或圖 - 帶有中繼資料(名稱、位置)的相鄰矩陣或圖。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import painters
>>> adjacency = painters()
>>> adjacency.shape
(14, 14)
sknetwork.data.star_wars(metadata: 布林 = ) csr_矩陣 | 資料集[來源]

一幅雙部圖,將一些《星際大戰》中的反派角色與他們所出現的電影連接起來。

  • 雙部圖

  • 7 個節點(4 個反派角色,3 部電影),8 條邊

  • 反派角色與電影名稱

參數:

metadata - 為 True,傳回有附帶 metadata 的 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,傳回有附帶 metadata 的 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,傳回有附帶 metadata 的 Dataset 物件。

傳回:

鄰接矩陣或圖形 – 鄰接矩陣或圖形,包含元資料(名稱、位置、標籤、names_labels、雙鄰接、names_col)。

傳回類型:

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,傳回一個有 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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,傳回一個有 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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[來源碼]

循環圖(無向)。

參數:
  • n (int) – 節點數目。

  • metadata (bool) – 如果是 True,傳回一個有 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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[來源碼]

循環圖(有向)。

參數:
  • n (int) – 節點數目。

  • metadata (bool) – 如果是 True,傳回一個有 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import cyclic_digraph
>>> adjacency = cyclic_digraph(5)
>>> adjacency.shape
(5, 5)
sknetwork.data.格狀(n1: int = 10, n2: int = 10, metatdata: bool = False) csr_matrix | Dataset[來源程式碼]

格狀(無向)。

參數:
  • n1 (int) – 格狀維度。

  • n2 (int) – 格狀維度。

  • metadata (bool) – 如果是 True,傳回一個有 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

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[來源程式碼]

Erdos-Renyi 圖形。

參數:
  • n – 節點數。

  • p – 節點間連線機率。

  • 導向 – 如果 True,傳回有向圖。

  • 自環 – 如果 True,允許自環。

  • 種子 – 隨機產生器的種子(可選)。

傳回:

鄰接矩陣

傳回類型:

sparse.csr_matrix

範例

>>> from sknetwork.data import erdos_renyi
>>> adjacency = erdos_renyi(7)
>>> adjacency.shape
(7, 7)

參考

Erdős, P.、Rényi, A. (1959)。On Random Graphs。Publicationes Mathematicae。

sknetwork.data.block_model(sizes: 可疊代物件, p_in: float | 清單 | ndarray = 0.2, p_out: float = 0.05, directed: 布林值 = False, self_loops: 布林值 = False, metadata: 布林值 = False, seed: 整數 | = ) csr_matrix | 資料集[來源]

隨機區塊模型。

參數:
  • 尺寸 – 區塊尺寸。

  • p_in – 區塊內連線可能性。

  • p_out – 區塊間連線可能性。

  • 導向 – 如果 True,傳回有向圖。

  • 自環 – 如果 True,允許自環。

  • metadata – 如果 True,則傳回包含標籤的 Dataset 物件。

  • 種子 – 隨機產生器的種子(可選)。

傳回:

adjacency or graph – 具有 metadata(標籤)的鄰接矩陣或圖形。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import block_model
>>> sizes = np.array([4, 5])
>>> adjacency = block_model(sizes)
>>> adjacency.shape
(9, 9)

參考

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[來源]

Albert-Barabasi 模型。

參數:
  • n (int) – 節點數目。

  • degree (int) – 進入節點的度數(小於 n)。

  • directed (bool) – 如果 True,則傳回一個有向圖形。

  • 種子 – 隨機產生器的種子(可選)。

傳回:

鄰接矩陣

傳回類型:

sparse.csr_matrix

範例

>>> from sknetwork.data import albert_barabasi
>>> adjacency = albert_barabasi(30, 3)
>>> adjacency.shape
(30, 30)

參考

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 – 邊緣修改的機率。

  • 種子 – 隨機產生器的種子(可選)。

  • metadata - 為 True,傳回有附帶 metadata 的 Dataset 物件。

傳回:

鄰接或圖形 - 鄰接矩陣或有 metadata(位置)的圖形。

傳回類型:

Union[sparse.csr_matrix, Dataset]

範例

>>> from sknetwork.data import watts_strogatz
>>> adjacency = watts_strogatz(30, 4, 0.02)
>>> adjacency.shape
(30, 30)

參考

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。

參數:
  • 資料夾 (字串或 pathlib.Path) – 捆綁資料夾名稱。

  • 資料 (聯集[稀疏.csr_矩陣, 資料集]) – 要儲存的資料。

範例

>>> 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(資料夾: 字串 | 路徑)[來源]

從當前目錄中先前提出的捆綁資料載入資料集(save 的反函數)。

參數:

資料夾 (字串) – 捆綁資料夾名稱。

傳回:

資料 – 資料。

傳回類型:

資料集

範例

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