性夜影院午夜看片,无码精品久久一区二区三区,婷婷成人丁香五月综合激情,校园春色 qvod,性调教室高h学校

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

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

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

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

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

該項目的帖子在reddit上一經(jīng)發(fā)布,就被頂?shù)搅恕皺C器學習板塊”的榜首。

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

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

功能亮點

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

它支持多種算法,包括:

  • Louvain算法;
  • Girvan-Newman算法;
  • 層次聚類算法;
  • 光譜聚類算法;
  • Bron-Kerbosch算法。

更贊的是,communities還可以實現(xiàn)這些算法的可視化。

具體了解一下~

導入算法并插入矩陣

這里以Louvain算法為例。

這是一種基于模塊度的社群發(fā)現(xiàn)算法,也是貪心算法。

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

最終,讓整個社群網(wǎng)絡呈現(xiàn)出一種模塊聚集的結構,實現(xiàn)整個社群網(wǎng)絡的模塊度的最大化。

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

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

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

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

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

實現(xiàn)可視化,并進行顏色編碼

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

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

其中各參數(shù)的具體含義為:

  • 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)):每英寸的點數(shù),控制圖像的分辨率;
  • seed (int, optional (default=2)):隨機種子。

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

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

動畫呈現(xiàn)算法

communities 還可以動畫呈現(xiàn)節(jié)點分配到社群的過程。

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

其中各參數(shù)的含義如下:

  • adj_matrix (numpy.ndarray):圖的鄰接矩陣;
  • frames (list):算法每次迭代的字典列表;
  • 每個字典都有倆個鍵:“C”包含節(jié)點到社群的查找表,“Q”表示圖的模塊度數(shù)值;
  • 此字典列表是 louvain_method的第二個返回值;
  • dark (bool, optional (default=False)):如果為 True, 則動畫為深色背景和配色方案,否則為淺色方案;
  • duration (int, optional (default=15)):動畫所需的持續(xù)時間,以秒為單位;
  • filename (str or None, optional (default=None)):通過filename 路徑將動畫存為GIF;設置None則以交互方式展示動畫;
  • dpi (int or None, optional (default=None)):每英寸點數(shù),控制動畫的分辨率;
  • seed (int, optional (default=2)):隨機種子。

例如,空手道俱樂部網(wǎng)絡中Louvain算法的動畫呈現(xiàn):

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

我們可以看到Louvain算法的動態(tài)過程:

  • 首先掃描數(shù)據(jù)中的所有節(jié)點,將每個節(jié)點看做一個獨立的社群;
  • 接下來,遍歷每個節(jié)點的鄰居節(jié)點,判斷是否將該節(jié)點加入鄰居節(jié)點所在的社群,以提升模塊度;
  • 這一過程重復迭代,直到每一個節(jié)點的社群歸屬穩(wěn)定;
  • 最后,將所有在同一個社群的節(jié)點壓縮成一個新節(jié)點,計算新節(jié)點的權重,直到整個圖的模塊度穩(wěn)定。

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

此外,它還可以用于社群間鄰接矩陣、拉普拉斯矩陣以及模塊度矩陣等。

對于這款工具,不少網(wǎng)友發(fā)出“awesome”、“really cool!”等花式贊嘆,表示正是自己需要的。

當然,也有網(wǎng)友提出疑問,例如:是否可以指定執(zhí)行的迭代次數(shù)(例如:提前停止)?

開發(fā)者對此表示:不能,但是對于某些算法,可以指定要將圖形劃分為多少個社群。

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

項目開發(fā)者Jonathan Shobrook,他目前是美國一家電商公司的軟件工程師。

之前GitHub上的熱門項目Rebound,也是出自他手,已經(jīng)獲得3.5k星。

更多信息可戳下方鏈接了解~

相關鏈接:

[1]https://github.com/shobrook/communities[2]https://www.reddit.com/r/MachineLearning/comments/lozys9/p_i_made_communities_a_library_of_clustering/

文章來源于網(wǎng)絡,侵刪!

這個圖聚類 Python 開源工具火了:可對社群結構進行可視化、檢測

相關新聞

歷經(jīng)多年發(fā)展,已成為國內(nèi)好評如潮的Linux云計算運維、SRE、Devops、網(wǎng)絡安全、云原生、Go、Python開發(fā)專業(yè)人才培訓機構!