Networkx中的图论

5 投票
2 回答
4058 浏览
提问于 2025-04-18 10:01

我现在开始使用这个接口,我对Python有一些经验,但不算太多。我正在计算一个小图的传递性和社区结构:

import networkx as nx

G = nx.read_edgelist(data, delimiter='-', nodetype=str)
nx.transitivity(G)

#find modularity
part = best_partition(G)
modularity(part, G)

我计算传递性没问题,不过在计算模块度的时候出现了以下错误。

NameError: name 'best_partition' is not defined

我只是按照networkx网站上提供的文档操作的,我是不是哪里做错了?

2 个回答

2

我刚遇到了同样的错误 NameError: name 'best_partition' is not defined,是在使用这个示例代码的时候。

这个错误发生是因为我把我的Python文件命名为 networkx.py,所以当我们运行这个程序时,

import networkx as nx

这个程序可能会导入我们自己定义的 networkx,而不是库里的内容。在程序中,best_partition 没有被定义,所以就出现了这个错误。

文件名和库名相同是不合适的。也许你应该检查一下这个问题!

10

根据我的了解,best_partition 这个东西并不是 networkx 里自带的。看起来你想用的是 https://sites.google.com/site/findcommunities/,你可以从 https://bitbucket.org/taynaud/python-louvain/src 这个地方安装它。

安装好 community 之后,可以试试下面的代码:

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

G = nx.random_graphs.powerlaw_cluster_graph(300, 1, .4)
nx.transitivity(G)

#find modularity
part = community.best_partition(G)
mod = community.modularity(part,G)

#plot, color nodes using community structure
values = [part.get(node) for node in G.nodes()]
nx.draw_spring(G, cmap = plt.get_cmap('jet'), node_color = values, node_size=30, with_labels=False)
plt.show()

在这里输入图片描述

补充:我安装社区检测库的方法

ryan@palms ~/D/taynaud-python-louvain-147f09737714> pwd
/home/ryan/Downloads/taynaud-python-louvain-147f09737714
ryan@palms ~/D/taynaud-python-louvain-147f09737714> sudo python3 setup.py install

撰写回答