python networkx:无法使用current_flow_betweenness_centrality函数

0 投票
1 回答
595 浏览
提问于 2025-04-17 19:19

我正在尝试使用NetworkX库中的current_flow_betweenness_centrality函数,但在调用时出现了这个错误:

Traceback (most recent call last):   File "D:\IVV\pcg\procsator\__init__.py", line 47, in <module>
    el_val_rel = graph.elements_values(elements, conn_graph, m)   File "D:\IVV\pcg\procsator\graph.py", line 46, in elements_values
    conn_val = metric_func(g)   File "C:\Python27\lib\site-packages\networkx\algorithms\centrality\current_flow_betweenness.py", line 233, in current_flow_betweenness_centrality
    solver=solver):   File "C:\Python27\lib\site-packages\networkx\algorithms\centrality\flow_matrix.py", line 15, in flow_matrix_row
    dtype=dtype, format='csc')   File "C:\Python27\lib\site-packages\networkx\algorithms\centrality\flow_matrix.py", line 135, in laplacian_sparse_matrix
    dtype=dtype, format=format)   File "C:\Python27\lib\site-packages\networkx\convert.py", line 790, in to_scipy_sparse_matrix
    for u,v,d in G.edges_iter(nodelist, data=True) ValueError: need more than 0 values to unpack

这是我使用的代码:

import networkx as nx

g=nx.Graph()
a=object()
b=object()
c=object()
d=object()
g.add_edge(a,b,{'distance': 4.0})
g.add_edge(a,c,{'distance': 1.5})
g.add_edge(b,c,{'distance': 2.2})
g.add_edge(c,d,{'distance': 2.6})
result = nx.current_flow_betweenness_centrality(g, weight='distance')

我哪里出错了?我在Windows 7 x64上,使用的是NetworkX 1.7,Python版本是2.7和3.3。

1 个回答

1

更新:

这是一个已经修复的错误,详细信息可以查看 https://github.com/networkx/networkx/pull/856

原来的(错误的)回答:

NetworkX中的节点必须是可以被Python“哈希”的对象。你的对象()节点不是这样的。(你收到的错误信息并没有提供太多帮助)。

例如,这个是可以工作的:

import networkx as nx

g=nx.Graph()
a=1
b=2
c=3
d=4
g.add_edge(a,b,{'distance': 4.0})
g.add_edge(a,c,{'distance': 1.5})
g.add_edge(b,c,{'distance': 2.2})
g.add_edge(c,d,{'distance': 2.6})
result = nx.current_flow_betweenness_centrality(g, weight='distance')

撰写回答