成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 后端
最近,又有一款Python可視化工具火了。這一次,功能是針對圖聚類問題的社群結構進行檢測、可視化。

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

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

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

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

功能亮點

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

它支持多種算法,包括:

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

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

具體了解一下~

導入算法并插入矩陣

這里以Louvain算法為例。

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

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

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

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

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

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

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

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

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

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

  1. 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算法的可視化,代碼是這樣的: 

  1. from communities.algorithms import louvain_method  
  2. from communities.visualization import draw_communities  
  3. adj_matrix = [...]  
  4. communities, frames = louvain_method(adj_matrix)  
  5. draw_communities(adj_matrix, communities) 

動畫呈現算法

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

  1. 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算法的動畫呈現: 

  1. from communities.algorithms import louvain_method  
  2. from communities.visualization import louvain_animation  
  3. adj_matrix = [...]  
  4. communities, frames = louvain_method(adj_matrix) 
  5. louvain_animation(adj_matrix, frames) 

 

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

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

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

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

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

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

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

 

 

責任編輯:龐桂玉 來源: 馬哥Linux運維
相關推薦

2021-02-25 15:21:27

Python 開發編程語言

2023-03-27 23:42:29

樹狀圖開發可視化

2021-02-21 08:11:46

PythonDash工具

2021-10-08 09:27:11

Python圖形化工具

2024-08-20 14:31:16

2022-08-26 09:15:58

Python可視化plotly

2023-04-14 08:21:55

2020-02-27 08:59:11

DebugCode開源工具

2021-07-27 11:45:37

Python 開發編程

2020-03-11 14:39:26

數據可視化地圖可視化地理信息

2021-08-05 10:46:59

GitHub代碼開發者

2021-02-20 09:14:35

PythonPygal可視化

2011-04-12 10:59:33

HTML 5開源Maqetta

2011-05-11 15:41:53

HTML5

2018-07-11 12:30:51

編程語言Python數據可視化

2021-07-02 14:07:00

可視化Plotly漏斗圖

2023-05-06 12:57:34

Python工具

2021-03-31 13:28:17

開源工具Python編程語言

2025-02-25 11:14:39

2020-05-19 11:46:50

MongoDB圖形開源
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲精选一区二区 | 亚洲一区视频在线 | 日韩欧美精品在线播放 | 欧美性网 | 超碰97在线免费 | 黄色片在线看 | 欧美a区| 日韩av免费在线电影 | 天天色天天色 | 一级a毛片 | 欧美日韩亚洲视频 | 国产精品视频一区二区三区不卡 | 日韩福利在线观看 | 日本国产一区二区 | 99热在线播放 | 欧美日韩电影一区二区 | 国产成人综合在线 | 欧美成人激情 | 国产精品99免费视频 | 99久久久久久99国产精品免 | 久久中文一区二区 | 精区3d动漫一品二品精区 | 国产精品自拍av | 日韩在线大片 | 亚洲欧美一区二区三区在线 | 手机看黄av免费网址 | 国产精品视频一二三区 | 欧美精品一区二区免费 | 在线视频久久 | 欧美激情免费在线 | 久久三区 | 18av在线播放 | 一区二区在线不卡 | 国产精彩视频在线观看 | 亚洲精品中文字幕在线观看 | 婷婷久| 992tv人人草| 久久一区精品 | 国产精品欧美一区二区 | 日本精品国产 | 日韩精品1区2区 |