我有下面的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
答案 0 :(得分:2)
如果使用的是NetworkX 2.4,请使用G.nodes []而不是G.node []。由于不推荐使用后者。请参阅(https://networkx.github.io/documentation/stable/release/release_2.4.html#deprecations)。
答案 1 :(得分:0)
我遇到了同样的问题。我正在使用 Anaconda3。 pip uninstall networkx 在 Anaconda 命令窗口中不起作用。我打开 Anaconda powershell 并执行 pip uninstall networkx 然后回到 Anaconda 命令窗口 pip install networkx==2.3
此后错误解决