关于在networkx中使用louvain算法报错的问题
Networkx是復雜網絡科學中常用的python包,louvain也是常用的社團發現算法之一。在networkx的文檔中也有描述。louvain_communities — NetworkX 2.8.5 documentationhttps://networkx.org/documentation/stable/reference/algorithms/generated/networkx.algorithms.community.louvain.louvain_communities.html#networkx.algorithms.community.louvain.louvain_communities但當我對該函數進行調用時,發現并沒有相關屬性,如下圖(下圖測試的代碼時官網給的示例代碼)。如果是自己寫的那就算了,但是這是官方文檔中的代碼,真的服了(*  ̄︿ ̄)。如下圖:
?因此我定位到源代碼所在的文件目錄community文件夾下尋找原因,發現文件夾中并沒有文檔中所說的louvain_communities的相關文件。文件夾中只包含了文檔中所描述的部分函數。如下圖:
?然而,幸運的是。官方文檔中包含了函數的源代碼,因此我們可能從源代碼入手,創建缺失的相關文件。點擊下圖的source就可以看到該方法的源代碼,見下面兩張圖
?我拷貝文檔中的所有內容到空的py文件中,(注意這里要刪掉第13行和第116行的”[docs]”),然后將文件保存到上述的community文件夾下命名為”Louvain_communities.py”,之后我們更改community文件夾下的”__init__.py”文件,新增”from networkx.algorithms.community.louvain_communites import *”如下圖所示:
保存之后我們重啟juypter內核,重新運行代碼,發現報如下錯誤:?
?
?這是因為在我們新寫入的源碼中modularity的導入發生了錯誤,因此我們定位到modularity的定義位置,發現這個函數存在于另外一個文件”quality.py”文件中,如下圖:
?因此我們必須更改我們在源碼中的modularity函數的引入方式,將”louvain_communities.py”文件中第7行的”from networkx.algorithms.community import modularity”更改為”from networkx.algorithms.community.quality import modularity”。更改保存之后,我們重啟jupyter內核,運行代碼最終成功運行。運行結果與官網的結果一致,大功告成!!!( ̄︶ ̄)↗
?
總結
以上是生活随笔為你收集整理的关于在networkx中使用louvain算法报错的问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10年老电脑如何提速_电脑越用越卡?如何
- 下一篇: js备忘录模式——实现分页点击已经请求过