如何在networkx 2.2中使用社区模块“ python-louvain”?

时间:2018-10-31 15:34:03

标签: python-3.x networkx

我曾经这样使用这个模块:

import community

if __name__ == '__main__':

    G = nx.karate_club_graph()
    pos = nx.spring_layout(G)

    partition = community.best_partition(G)

我安装了正确的模块:

sudo pip3 install python-louvain

我收到此错误:

AttributeError: module 'community' has no attribute 'best_partition'

据我所知,该文档遵循here中提供的文档。

6 个答案:

答案 0 :(得分:2)

似乎其他一些人之前也遇到过此问题,请参见: https://bitbucket.org/taynaud/python-louvain/issues/23/module-has-no-attribute-best_partition

如果您安装了另一个称为社区的库,这可能会引起问题。这是我链接到的线程中提出的一种解决方案:

from community import community_louvain
partition = community_louvain.best_partition(G)

答案 1 :(得分:1)

我也是使用Networkx的初学者,但我在Jupyter笔记本中使用了以下语法,对我来说很好用。

!pip install python-louvain
from community import community_louvain
communities =community_louvain.best_partition(G)

问候,

答案 2 :(得分:1)

为了它的价值:我不得不

<块引用>

pip卸载社区

然后

<块引用>

pip install python-louvain

然后

<块引用>

pip install networkx

为了让我的 conda py37 环境正常工作,并且能够在没有属性错误的情况下调用 community.best_partition()

我认为,如果您在 networkx 之前安装了 python-louvain,它将声明 community 的命名空间并且不允许您运行您想要的。

答案 3 :(得分:0)

您应该在下面安装软件包。我用它,它的工作原理。 我将其安装在Windows中。
https://pypi.org/project/python-louvain/

在cmd中编写“ pip install python-louvain”,然后编写如下程序:

import community
import networkx as nx
import matplotlib.pyplot as plt

G = nx.erdos_renyi_graph(30, 0.05)
partition = community.best_partition(G)
size = float(len(set(partition.values())))
pos = nx.spring_layout(G)
count = 0
for com in set(partition.values()) :
    count = count + 1
    list_nodes = [nodes for nodes in partition.keys()if partition[nodes] == com]
    nx.draw_networkx_nodes(G, pos, list_nodes, node_size = 20,node_color = str(count / size))

nx.draw_networkx_edges(G, pos, alpha=0.5)
plt.show()

我使用python 3.7

答案 4 :(得分:0)

您需要here中名为python-louvain的软件包。

!pip install python-louvain

import networkx as nx
import community
import numpy as np
np.random.seed(0)

W = np.random.rand(15,15)
np.fill_diagonal(W,0.0)

G = nx.from_numpy_array(W)
louvain_partition = community.best_partition(G, weight='weight')
modularity2 = community.modularity(louvain_partition, G, weight='weight')
print("The modularity Q based on networkx is {}".format(modularity2))

基于networkx的模块化Q为0.0849022950503318

答案 5 :(得分:0)

我不确定为什么会出现以下情况,但似乎有另一个名为“community”的包不包含函数“community.best_partition”。如上所述,您想要“python-louvain”包,它似乎包含“社区”部分?!在 PyCharm 2020.3 中,在 Preferences -> Project: Python Interpreter 下,我删除了“community”包并添加了“python-louvain”包。之后,“导入社区”仍然像“community.best_partition”一样工作。