0

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で、Python2.7と3.3の両方でNetworkX1.7を試してみました。

4

1 に答える 1

1

アップデート:

これは、 https://github.com/networkx/networkx/pull/856で対処/修正されたバグです。

元の(間違った)回答:

NetworkX ノードは、Python の「ハッシュ可能な」オブジェクトでなければなりません。あなたの object() ノードはそうではありません。(表示されたエラー メッセージはあまり役に立ちません)。

たとえば、これは機能します

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')
于 2013-03-16T20:17:54.227 に答える