色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

    文章

    4608

    瀏覽量

    92845
  • 可視化
    +關注

    關注

    1

    文章

    1194

    瀏覽量

    20936
  • python
    +關注

    關注

    56

    文章

    4793

    瀏覽量

    84633

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

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

收藏 人收藏

    評論

    相關推薦

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

    社區結構是復雜網絡的重要特征之,該文通過構造基于興趣的論壇用戶網絡,成功地將社區結構發現的理論與方法應用于論壇熱點主題的自動發現,提出了極
    發表于 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>

    基于標簽影響力的半同步社區發現算法

    微博網絡與社交網絡等的交互式社會信息網絡規模的快速增長對社區發現提出巨大挑戰。標簽傳播算法( LPA)雖然在時間復雜度上具有很大的優勢,但是其內在的多種隨機策略使得算法穩定性不高。針對
    發表于 12-17 11:34 ?0次下載

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

    目前,針對復雜網絡的社區發現算法大多僅根據網絡的拓撲結構來確定社區,然而現實復雜網絡中的邊可能帶有表示連接緊密程度或者可信度意義的權重,這些先驗信息對
    發表于 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 ?3523次閱讀

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

    社區發現是復雜網絡分析的重要任務」現有的社區發現方法大多面向單層網絡,對現實世界中廣泛存在的多層網絡中的社區
    發表于 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次下載
    主站蜘蛛池模板: 白百合在线观看| 日韩美女爱爱| 欧美日韩视频高清一区| 日日噜噜噜夜夜爽爽狠狠| 久久www免费人成_看片高清| tube69hdxxxx日本| 一二三四在线视频社区| 色狠狠色综合吹潮| 拔萝卜视频免费看高清| 久久视频这里只精品99热在线观看 | 2019伊人查蕉在线观看| 高中生被C到爽哭视频免费| 日韩成人黄色| 国产色综合久久无码有码 | 亚洲精品久久久久中文字幕二区| 国产午夜伦伦伦午夜伦| 热思思| 亚洲精品AV无码重口另类| 亚洲色综合狠狠综合区| 十八禁啪啦啪漫画| 在线观看日本污污ww网站| wwwwwwwww日本电影| 久草免费视频在线观看| 欧美派对xxxhdparty| 亚洲欧美综合在线中文| 成人无码国产AV免费看直播| 日本无卡无吗在线| 免费欧美大片| 精品夜夜澡人妻无码AV| 冰山高冷受被c到哭np双性| 最近最新的日本字幕MV| 一品道门在线视频| 亚洲精品蜜桃AV久久久| 午夜影视免费| 深夜释放自己污在线看| 日韩欧美视频一区二区在线观看| 男人国产AV天堂WWW麻豆| 蜜臀AV精品一区二区三区| 久久久久婷婷国产综合青草| 久久草这里全是精品香蕉频线观| 国内一级一级毛片a免费|