中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用圖聚類Python開源工具

發布時間:2021-10-18 10:43:33 來源:億速云 閱讀:158 作者:iii 欄目:編程語言

本篇內容介紹了“如何使用圖聚類Python開源工具”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

最近,又有一款Python可視化工具火了。

如何使用圖聚類Python開源工具

這一次,功能是針對圖聚類問題的社群結構進行檢測、可視化。

如何使用圖聚類Python開源工具

該項目的帖子在reddit上一經發布,就被頂到了“機器學習板塊”的榜首。

如何使用圖聚類Python開源工具

一起來看看它究竟都能用來做什么吧~

功能亮點

這款工具叫做communities, 是一個Python庫,用于圖聚類問題的社群結構檢測。

它支持多種算法,包括:

  •  Louvain算法;

  •  Girvan-Newman算法;

  •  層次聚類算法;

  •  光譜聚類算法;

  •  Bron-Kerbosch算法。

更贊的是,communities還可以實現這些算法的可視化。

具體了解一下~

導入算法并插入矩陣

這里以Louvain算法為例。

這是一種基于模塊度的社群發現算法,也是貪心算法。

它根據頂點的共享邊將頂點排列成社群結構,也就是說,它將節點分為幾個社群,每個社群之間共享很少的連接,但是同一社群的節點之間共享許多連接。

最終,讓整個社群網絡呈現出一種模塊聚集的結構,實現整個社群網絡的模塊度的最大化。

所以首先,我們需要構建一個表示無向圖的鄰接矩陣,可以加權,也可以不加權,矩陣為2Dnumpy數組。

n*n矩陣則表示有n個節點,矩陣的每個位置分別表示各節點之間邊的關系,有邊則為1,沒有邊則為0。

然后,只需從communities.algorithms中導入算法并插入矩陣。

import numpy as np  from communities.algorithms import louvain_method  adj_matrix = np.array([[0, 1, 1, 0, 0, 0],                         [1, 0, 1, 0, 0, 0],                         [1, 1, 0, 1, 0, 0],                         [0, 0, 1, 0, 1, 1],                         [0, 0, 0, 1, 0, 1],                         [0, 0, 0, 1, 1, 0]])  communities, _ = louvain_method(adj_matrix)  # >>> [{0, 1, 2}, {3, 4, 5}]

接下來輸出社群列表,每個社群即為一組節點。

現可視化,并進行顏色編碼

利用communities將圖進行可視化,將節點分到社群中并進行顏色編碼,還可以選擇深色或淺色背景、保存圖片、選擇圖片的分辨率等等 。

draw_communities(adj_matrix : numpy.ndarray, communities : list, dark : bool = False, filename : str = None, seed : int = 1)

其中各參數的具體含義為:

  •  adj_matrix (numpy.ndarray):圖的鄰接矩陣;

  •  dark (bool, optional (default=False)):如果為 True, 則繪圖為深色背景,否則為淺色背景;

  •  filename (str or None, optional (default=None)):通過 filename 路徑可以將圖另存為PNG格式; 設置 None 則是用交互方式顯示圖;

  •  dpi (int or None, optional (default=None)):每英寸的點數,控制圖像的分辨率;

  •  seed (int, optional (default=2)):隨機種子。

具體到Louvain算法的可視化,代碼是這樣的:

from communities.algorithms import louvain_method  from communities.visualization import draw_communities  adj_matrix = [...]  communities, frames = louvain_method(adj_matrix)  draw_communities(adj_matrix, communities)

如何使用圖聚類Python開源工具

動畫呈現算法

communities 還可以動畫呈現節點分配到社群的過程。

louvain_animation(adj_matrix : numpy.ndarray, frames : list, dark : bool = False, duration : int = 15, filename : str = None, dpi : int = None, seed : int = 2)

其中各參數的含義如下:

  •  adj_matrix (numpy.ndarray):圖的鄰接矩陣;

  •  frames (list):算法每次迭代的字典列表;

  •  每個字典都有倆個鍵:“C”包含節點到社群的查找表,“Q”表示圖的模塊度數值;

  •  此字典列表是 louvain_method的第二個返回值;

  •  dark (bool, optional (default=False)):如果為 True, 則動畫為深色背景和配色方案,否則為淺色方案;

  •  duration (int, optional (default=15)):動畫所需的持續時間,以秒為單位;

  •  filename (str or None, optional (default=None)):通過filename 路徑將動畫存為GIF;設置None則以交互方式展示動畫;

  •  dpi (int or None, optional (default=None)):每英寸點數,控制動畫的分辨率;

  •  seed (int, optional (default=2)):隨機種子。

例如,空手道俱樂部網絡中Louvain算法的動畫呈現:

from communities.algorithms import louvain_method  from communities.visualization import louvain_animation  adj_matrix = [...]  communities, frames = louvain_method(adj_matrix) louvain_animation(adj_matrix, frames)

如何使用圖聚類Python開源工具

我們可以看到Louvain算法的動態過程:

  •  首先掃描數據中的所有節點,將每個節點看做一個獨立的社群;

  •  接下來,遍歷每個節點的鄰居節點,判斷是否將該節點加入鄰居節點所在的社群,以提升模塊度;

  •  這一過程重復迭代,直到每一個節點的社群歸屬穩定;

  •  最后,將所有在同一個社群的節點壓縮成一個新節點,計算新節點的權重,直到整個圖的模塊度穩定。

大家可以通過文末鏈接,自行嘗試一下其他算法~

“如何使用圖聚類Python開源工具”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

镇赉县| 鄂温| 静安区| 岗巴县| 日喀则市| 新民市| 昌宁县| 遂川县| 南投县| 界首市| 富源县| 竹北市| 巴彦县| 土默特右旗| 宜黄县| 濮阳市| 德庆县| 渝北区| 西充县| 蕲春县| 泰州市| 嘉善县| 伊宁县| 马公市| 龙山县| 天长市| 新营市| 沅陵县| 徐水县| 百色市| 石家庄市| 吉首市| 资讯| 鹿泉市| 周口市| 乌审旗| 金阳县| 桃园市| 彭阳县| 梨树县| 福鼎市|