属性错误:'Graph'对象没有'node'属性。

27

我有以下Python代码来构建knn图,但是我遇到了错误:AttributeError: 'Graph' 对象没有属性 'node'。似乎nx.Graph()没有节点属性,但我不知道该用什么替换它。

import networkx as nx
def knn_graph(df, k, verbose=False):
    points = [p[1:] for p in df.itertuples()]
    g = nx.Graph()
    if verbose: print ("Building kNN graph (k = %d)" % (k))
    iterpoints = tqdm(enumerate(points), total=len(points)) if verbose else enumerate(points)
    for i, p in iterpoints:
        distances = map(lambda x: euclidean_distance(p, x), points)
        closests = np.argsort(distances)[1:k+1] # second trough kth closest
        for c in closests:
            g.add_edge(i, c, weight=distances[c])
        g.node[i]['pos'] = p
    return g

7
我认为应该是“节点”。 - Guy
@Guy,非常抱歉,它不起作用。因为我在它上面有一个错误:第178行,在__getitem__中返回self._nodes[n]。 - nino
1
什么是错误? - Guy
@nino,你能否请发布完整的回溯信息? - malanb5
2个回答

54

如果您正在使用 NetworkX 2.4,请使用 G.nodes[] 而不是 G.node[]。后者的属性已被弃用。请参见 发布说明


2
在我的情况下,我安装了 NetworkX 2.0 来解决这个错误。 - goe

0

我也遇到了同样的问题。我正在使用Anaconda3。在Anaconda命令窗口中,pip uninstall networkx无法正常工作。我打开了Anaconda PowerShell并执行了pip uninstall networkx,然后回到Anaconda命令窗口执行pip install networkx==2.3

这样之后,错误得到了解决。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接