关于在networkx中使用louvain算法报错的问题
Networkx是復(fù)雜網(wǎng)絡(luò)科學(xué)中常用的python包,louvain也是常用的社團(tuán)發(fā)現(xiàn)算法之一。在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但當(dāng)我對(duì)該函數(shù)進(jìn)行調(diào)用時(shí),發(fā)現(xiàn)并沒有相關(guān)屬性,如下圖(下圖測(cè)試的代碼時(shí)官網(wǎng)給的示例代碼)。如果是自己寫的那就算了,但是這是官方文檔中的代碼,真的服了(*  ̄︿ ̄)。如下圖:
?因此我定位到源代碼所在的文件目錄community文件夾下尋找原因,發(fā)現(xiàn)文件夾中并沒有文檔中所說(shuō)的louvain_communities的相關(guān)文件。文件夾中只包含了文檔中所描述的部分函數(shù)。如下圖:
?然而,幸運(yùn)的是。官方文檔中包含了函數(shù)的源代碼,因此我們可能從源代碼入手,創(chuàng)建缺失的相關(guān)文件。點(diǎn)擊下圖的source就可以看到該方法的源代碼,見下面兩張圖
?我拷貝文檔中的所有內(nèi)容到空的py文件中,(注意這里要?jiǎng)h掉第13行和第116行的”[docs]”),然后將文件保存到上述的community文件夾下命名為”Louvain_communities.py”,之后我們更改community文件夾下的”__init__.py”文件,新增”from networkx.algorithms.community.louvain_communites import *”如下圖所示:
保存之后我們重啟juypter內(nèi)核,重新運(yùn)行代碼,發(fā)現(xiàn)報(bào)如下錯(cuò)誤:?
?
?這是因?yàn)樵谖覀冃聦懭氲脑创a中modularity的導(dǎo)入發(fā)生了錯(cuò)誤,因此我們定位到modularity的定義位置,發(fā)現(xiàn)這個(gè)函數(shù)存在于另外一個(gè)文件”quality.py”文件中,如下圖:
?因此我們必須更改我們?cè)谠创a中的modularity函數(shù)的引入方式,將”louvain_communities.py”文件中第7行的”from networkx.algorithms.community import modularity”更改為”from networkx.algorithms.community.quality import modularity”。更改保存之后,我們重啟jupyter內(nèi)核,運(yùn)行代碼最終成功運(yùn)行。運(yùn)行結(jié)果與官網(wǎng)的結(jié)果一致,大功告成!!!( ̄︶ ̄)↗
?
總結(jié)
以上是生活随笔為你收集整理的关于在networkx中使用louvain算法报错的问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 10年老电脑如何提速_电脑越用越卡?如何
- 下一篇: ios信号从4g变成无服务器,苹果信号满