关于在networkx中使用louvain算法报错的问题

module ‘networkx.algorithms.community’ has no attribute ‘louvain_communities’

Networkx是复杂网络科学中常用的python包,louvain也是常用的社团发现算法之一。在networkx的文档中也有描述。louvain_communities — NetworkX 2.8.5 documentationicon-default.png?t=M666https://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内核,运行代码最终成功运行。运行结果与官网的结果一致,大功告成!!!( ̄︶ ̄)↗ 

 

  • 4
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 10
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值