下面是使用 Python 2.7 在 networkx 中创建一个非常简单的图的代码,并调用返回 Betweenness_centrality:
import networkx as nx
G = nx.Graph()
G.add_nodes_from([1,3])
G.add_edge(1,2)
G.add_edge(2,3)
G.add_edge(1,3)
G[1][2]['weight']=4400
G[2][3]['weight']=4100
G[1][3]['weight']=1500
print nx.betweenness_centrality(G,weight='weight')
我期望看到权重基本上是按分配的,但权重全部为零:
{1:0.0、2:0.0、3:0.0}
我显然错过了一些简单的东西,并且无法从在线文档中看到它是什么。谢谢。
networkx. Betweenness_centrality() 的默认值(也可以说是标准定义)不包括端点计数。因此,对于您的 K3 图,每个节点上的介数为 0。如果您想计算端点数量,请使用
In [1]: import networkx as nx
In [2]: G = nx.Graph()
In [3]: G.add_nodes_from([1,3])
In [4]: G.add_edge(1,2)
In [5]: G.add_edge(2,3)
In [6]: G.add_edge(1,3)
In [7]: G[1][2]['weight']=4400
In [8]: G[2][3]['weight']=4100
In [9]: G[1][3]['weight']=1500
In [10]: print(nx.betweenness_centrality(G,weight='weight',endpoints=True))
{1: 2.0, 2: 2.0, 3: 2.0}
请注意,“权重”属性用于查找最短路径,并不直接计入介数分数。例如,循环中的非对称路径:
In [1]: import networkx as nx
In [2]: G = nx.cycle_graph(4)
In [3]: nx.set_edge_attributes(G,'weight',1)
In [4]: print(nx.betweenness_centrality(G,weight='weight'))
{0: 0.16666666666666666, 1: 0.16666666666666666, 2: 0.16666666666666666, 3: 0.16666666666666666}
In [5]: G[0][1]['weight']=5
In [6]: print(nx.betweenness_centrality(G,weight='weight'))
{0: 0.0, 1: 0.0, 2: 0.6666666666666666, 3: 0.6666666666666666}
我是一名优秀的程序员,十分优秀!