我有一个距离矩阵,如下所示:
[A B C D....
A 0 NaN 2 3
B NaN 0 2 5
C 3 1 0 NaN
D 4 18 NaN 0
...]
[为了计算集中度度量,我画了一个网络,但是对于每个集中度度量(介于,紧密度,度数等之间),它都返回相同的数字。
下面是我的代码:
(Domain: A, B, C, D, ...)
ser3 = df['Domain'].unique()
G_weighted = nx.Graph()
for x in ser3:
if(x is None):continue
for y in ser3:
ind=dist_matrix[x][y]
print(ind)
if (ind is None):continue
if (ind>0): G_weighted.add_edge(x,y,weight=ind)
nx.betweenness_centrality(G)
[Out]:
{'A': 0.0, 'B': 0.0, 'C': 0.0, 'D': 0.0, ....}
有人可以帮我解决这个问题吗?提前非常感谢...
我和你不太一样。通常,如果您有complete graph,即所有节点对都连接在一起的图形,则所有节点的中间性中心点都将为零。但这似乎不是您的情况。
假设邻接矩阵是一个数据框,使用我得到的样本矩阵:
G = nx.from_pandas_adjacency(df)
edges_rem = []
for edge in G.edges(data=True):
if np.isnan(edge[2]['weight']):
edges_rem.append(edge[:2])
G.remove_edges_from(edges_rem)
G_weighted.edges(data=True)
# EdgeDataView([('A', 'C', {'weight': 3.0}), ('A', 'D', {'weight': 4.0}),
# ('C', 'B', {'weight': 1.0}), ('D', 'B', {'weight': 18.0})])
nx.betweenness_centrality(G_weighted)
{'A': 0.16666666666666666,
'B': 0.16666666666666666,
'C': 0.16666666666666666,
'D': 0.16666666666666666}