在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

發現一個寶藏Python庫,玩社區發現算法的不能錯過!

Android編程精選 ? 來源:任識算法 ? 2023-02-08 11:11 ? 次閱讀
網絡是由一些緊密相連的節點組成的,并且根據不同節點之間連接的緊密程度,網絡也可視為由不同簇組成。簇內的節點之間有著更為緊密的連接,不同簇之間的連接則相對稀疏。這種簇被稱為網絡中的社區結構(community structure)。

由此衍生出來的社區發現(community detection)算法用來發現網絡中的社區結構,這類算法包括Louvain 算法、Girvan-Newman 算法以及 Bron-Kerbosch 算法等。

最近,在 GitHub 上發現了一個可以發現圖中社區結構的 Python 庫 communities,該庫由軟件工程師 Jonathan Shobrook 創建。

6aa6c156-a736-11ed-bfe3-dac502259ad0.png

項目地址:https://github.com/shobrook/communities

首先,該庫可以實現以下幾種社區發現算法:

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

其次,用戶還可以使用 communities 庫來可視化上述幾種算法,下圖為空手道俱樂部(Zachary's karate club)網絡中 Louvain 算法的可視化結果:

6abd92c8-a736-11ed-bfe3-dac502259ad0.gif

該庫的安裝方法也非常簡單,可采用 pip 的方式安裝 communities,代碼如下:

importnumpyasnp

fromcommunities.algorithmsimportlouvain_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)

>>communities
[{0,1,2},{3,4,5}]

對于這個 Python 庫,很多網友給予了高度評價,表示會去嘗試。

6b316234-a736-11ed-bfe3-dac502259ad0.png

算法詳解

1、Louvain 算法

louvain_method(adj_matrix:numpy.ndarray,n:int=None)->list

該算法來源于文章《Fast unfolding of communities in large networks》,簡稱為 Louvian。

作為一種基于模塊度(Modularity)的社區發現算法,Louvain 算法在效率和效果上都表現比較好,并且能夠發現層次性的社區結構,其優化的目標是最大化整個圖屬性結構(社區網絡)的模塊度。

Louvain 算法對最大化圖模塊性的社區進行貪婪搜索。如果一個圖具有高密度的群體內邊緣和低密度的群體間邊緣,則稱之為模圖。

示例代碼如下:

fromcommunities.algorithmsimportlouvain_methodad

j_matrix=[...]

communities,_=louvain_method(adj_matrix)

2、Girvan-Newman 算法

girvan_newman(adj_matrix:numpy.ndarray,n:int=None)->list

該算法來源于文章《Community structure in social and biological networks》。

Girvan-Newman 算法迭代刪除邊以創建更多連接的組件。每個組件都被視為一個 community,當模塊度不能再增加時,算法停止去除邊緣。

示例代碼如下:

fromcommunities.algorithmsimportgirvan_newman

adj_matrix=[...]

communities,_=girvan_newman(adj_matrix)

3、層次聚類

hierarchical_clustering(adj_matrix:numpy.ndarray,metric:str="cosine",linkage:str="single",n:int=None)->list

層次聚類實現了一種自底向上、分層的聚類算法。每個節點從自己 的社區開始,然后,隨著層次結構的建立,最相似的社區被合并。社區會一直被合并,直到在模塊度方面沒有進一步的進展。

示例代碼如下:

fromcommunities.algorithmsimporthierarchical_clustering

adj_matrix=[...]

communities=hierarchical_clustering(adj_matrix,metric="euclidean",linkage="complete")

4、譜聚類

spectral_clustering(adj_matrix:numpy.ndarray,k:int)->list

這種類型的算法假定鄰接矩陣的特征值包含有關社區結構的信息

示例代碼如下:

fromcommunities.algorithmsimportspectral_clustering

adj_matrix=[...]

communities=spectral_clustering(adj_matrix,k=5)

5、Bron-Kerbosch 算法

bron_kerbosch(adj_matrix:numpy.ndarray,pivot:bool=False)->list
Bron-Kerbosch 算法實現用于最大團檢測maximal clique detection)。圖中的最大團是形成一個完整圖的節點子集,如果向該子集中添加其他節點,則它將不再完整。將最大團視為社區是合理的,因為團是圖中連接最緊密的節點群。因為一個節點可以是多個社區的成員,所以該算法有時會識別重疊的社區。示例代碼如下:
fromcommunities.algorithmsimportbron_kerbosch

adj_matrix=[...]

communities=bron_kerbosch(adj_matrix,pivot=True)

可視化

繪圖

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

可視化圖(graph),將節點分組至它們所屬的社區和顏色編碼中。返回代表繪圖的 matplotlib.axes.Axes。示例代碼如下:

fromcommunities.algorithmsimportlouvain_method

fromcommunities.visualizationimportdraw_communities

adj_matrix=[...]

communities,frames=louvain_method(adj_matrix)

draw_communities(adj_matrix,communities)

可視化圖如下:

6b4d0958-a736-11ed-bfe3-dac502259ad0.jpg

Louvain 算法的動圖展示

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

Louvain 算法在圖中的應用可以實現動圖展示,其中每個節點的顏色代表其所屬的社區,并且同一社區中的節點聚類結合在一起。

示例代碼如下:

fromcommunities.algorithmsimportlouvain_method

fromcommunities.visualizationimportlouvain_animation

adj_matrix=[...]

communities,frames=louvain_method(adj_matrix)

louvain_animation(adj_matrix,frames)

動圖展示如下:

6b64fc8e-a736-11ed-bfe3-dac502259ad0.gif

參考鏈接:

https://www.codenong.com/cs105912940/

https://www.reddit.com/r/MachineLearning/comments/lozys9/p_i_made_communities_a_library_of_clustering/

審核編輯 :李倩


聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 算法
    +關注

    關注

    23

    文章

    4625

    瀏覽量

    93127
  • 可視化
    +關注

    關注

    1

    文章

    1198

    瀏覽量

    20994
  • python
    +關注

    關注

    56

    文章

    4802

    瀏覽量

    84890

原文標題:發現一個寶藏 Python 庫,玩社區發現算法的不能錯過!

文章出處:【微信號:AndroidPush,微信公眾號:Android編程精選】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    基于用戶滿意度的學習服務發現算法

    引入用戶滿意度因子,設計學習服務發現算法——eLSDAUS,并應用于網絡學習系統中。該算法允許用戶參與服務
    發表于 03-28 09:43 ?14次下載

    基于復雜網絡社區結構的論壇熱點主題發現

    社區結構是復雜網絡的重要特征之,該文通過構造基于興趣的論壇用戶網絡,成功地將社區結構發現的理論與方法應用于論壇熱點主題的自動發現,提出了極
    發表于 04-22 08:45 ?12次下載

    基于鏈接分析和用戶興趣的微博社區發現算法

    微博網絡中的每一個節點代表微博用戶,微博用戶之間除了存在定的社會關系外,用戶本身也具有定的特性。用戶之間明顯的鏈接關系可以為
    發表于 11-21 17:06 ?3次下載

    種基于聚集系數的社區發現算法

    社區發現變得更為復雜。提出了種局部社區發現算法,該算法
    發表于 12-05 16:03 ?2次下載
    <b class='flag-5'>一</b>種基于聚集系數的<b class='flag-5'>社區</b><b class='flag-5'>發現</b><b class='flag-5'>算法</b>

    種加權稠密子圖社區發現算法

    目前,針對復雜網絡的社區發現算法大多僅根據網絡的拓撲結構來確定社區,然而現實復雜網絡中的邊可能帶有表示連接緊密程度或者可信度意義的權重,這些先驗信息對
    發表于 12-25 10:13 ?0次下載

    融合多維數據的微博社區發現算法

    隨著微博用戶的不斷增加,微博網絡已成為用戶進行信息交流的平臺,針對由于博文長度受限,傳統的社區發現算法無法有效解決微博網絡的稀疏性等問題,提出了DC-DTM(discovery community
    發表于 01-02 16:26 ?3次下載
    融合多維數據的微博<b class='flag-5'>社區</b><b class='flag-5'>發現</b><b class='flag-5'>算法</b>

    自動編碼器的社區發現算法

    社區結構是復雜網絡的重要特征之社區發現對研究網絡結構有重要的應用價值.K均值等經典聚類算法是解決社區
    發表于 01-02 18:32 ?0次下載
    自動編碼器的<b class='flag-5'>社區</b><b class='flag-5'>發現</b><b class='flag-5'>算法</b>

    基于標簽傳播的社交網絡的社區發現模型

    針對基于標簽傳播的復雜網絡重疊社區發現算法中預先輸入參數在真實網絡中的局限性以及標簽冗余等問題,提出種基于標簽傳播的面向大規模學術社交網絡的社區
    發表于 01-04 16:49 ?0次下載
    基于標簽傳播的社交網絡的<b class='flag-5'>社區</b><b class='flag-5'>發現</b>模型

    組合29簡單Python代碼塊,自動發現算法

    本文提出了種基于演化算法的搜索策略,將其AAD中實現。AAD可以基于Python的子集作為語法結構,組合成復雜度相對較高的程序(循環,嵌套塊,嵌套函數調用等),并生成可執行的Python
    的頭像 發表于 04-19 13:47 ?3555次閱讀

    多層網絡社區發現相關研究及對比

    社區發現是復雜網絡分析的重要任務」現有的社區發現方法大多面向單層網絡,對現實世界中廣泛存在的多層網絡中的社區
    發表于 04-07 15:41 ?23次下載
    多層網絡<b class='flag-5'>社區</b><b class='flag-5'>發現</b>相關研究及對比

    結合改進差分進化和模塊密度的社區發現算法

    引入社區發現中,提出了種結合改進差分進化和模塊密度的社區發現算法。該
    發表于 04-12 14:54 ?4次下載
    結合改進差分進化和模塊密度的<b class='flag-5'>社區</b><b class='flag-5'>發現</b><b class='flag-5'>算法</b>

    復雜網絡社區發現下的多目標五行環優化算法

    社區結構作為復雜網絡的重要特性,對理解網絡的功能和結構具有重要意義。為了解決復雜網絡的社區發現問題,提出了種多目標五行環優化算法( Mul
    發表于 05-17 16:47 ?2次下載

    通用的動態社區發現研究框架綜述

    隨著社交媒體多樣性的増加,實時分析社交網絡的需求不斷増大,動態社區發現的硏究受到了廣泛的關注。已有的社區發現綜述多是側重靜態社區
    發表于 06-04 15:15 ?5次下載

    基于譜聚類的多目標復雜網絡社區發現算法

    多目標優化算法在復雜網絡社區發現中具有很強的競爭力,然而,在處理社區結構較為模糊、網絡數據規模大的問題時難以得到滿意的效果。為克服現有多目標方法的不足,提岀
    發表于 06-17 15:02 ?11次下載

    ESN中基于貪婪派系擴張的重疊社區發現算法

    傳統局部擴張方法在對企業社會化網絡(ESN)中的重疊社區結構進行識別時,存在計算冗余與社區挖掘不徹底的問題。為此,提出種基于貪婪派系擴張的重疊社區
    發表于 06-24 11:16 ?16次下載
    主站蜘蛛池模板: 免费在线观看视频| 久久久蜜桃| 成人午夜影院在线观看| 国产精品一区电影| 日韩成人黄色| 一区二区三区四区在线视频| 99青草青草久热精品视频| 欧美三级小视频| 网址色| 久久国产精品免费专区| 视频h在线观看| 美女操网站| 欧美性精品videofree| 男人和女人做a免费视频| 天天色姑娘| 亚洲伦理一区二区| 成人国产三级在线播放| 亚洲高清成人| 成人网男女啪啪免费网站| 成人黄色三级| 中文字幕一区二区三区免费视频| 777欧美| www射com| 亚洲一区二区三区免费在线观看 | 日本大片网| 日韩毛片视频| 激情综合网五月激情| 美女一区二区三区| 免费三级毛片| 免费恐怖片| freesex欧美| 337p亚洲精品色噜噜狠狠| 成人免费淫片95视频观看网站| 国产一级片免费| 狠狠色丁香婷婷| 狠狠色婷婷丁香综合久久韩国| 6969精品视频在线观看| 欧美影院| bt天堂在线观看| 精品国产麻豆免费人成网站| 在线观看国产精美视频|