计算 networkx 中单个节点中心性的最佳方法是什么?

What is the best way to calculate centralities for a single node in networkx?

我可以计算不同类型的中心性,例如 度数中间性亲密度,以及图G中所有节点的特征向量。例如,此代码为 graph G:

的所有包含节点计算 betweenness centrality
import networkx as nx
# build up a graph
G = nx.Graph()
G.add_nodes_from(['A', 'B', 'C', 'D', 'E'])
G.add_edges_from([('A', 'B'), ('B','C'), ('C', 'D'), ('D', 'E')])
bw_centrality = nx.betweenness_centrality(G, normalized=True)
print (bw_centrality)

对于大型网络,计算一些中心性是非常耗时的,比如betweenness亲密度。因此,我只想计算节点子集的中心性,而不是计算所有节点的中心性。在上面的示例中,如何通过 Networkx 库中的 node A 计算 betweenness =24=]Python?

在一个图中,我找到了计算单个节点的接近中心性的解决方案。但是,对于中间性,我一直没能找到解决办法。让我们计算图中节点的接近中心性。以下是如何计算所有节点的紧密度: 将 networkx 导入为 nx

# build up a graph

G = nx.Graph()
G.add_nodes_from(['A', 'B', 'C', 'D', 'E'])
G.add_edges_from([('A', 'B'), ('B','C'), ('C', 'D'), ('D', 'E')])
cc_centrality = nx.closeness_centrality(G)

print (cc_centrality )

因此,上述代码产生以下结果:

{'A': 0.4, 'B': 0.5714285714285714, 'C': 0.6666666666666666, 'D': 0.5714285714285714, 'E': 0.4}

下一步,我们将单独计算节点A的紧密度。根据Neworkx的源码,closeness centrality的含义如下:

closeness_centrality(G, u=None, distance=None, wf_improved=True)

图G表示定义的图,u表示要单独判断其接近程度的节点。要计算节点 A 的 接近度,请按照下列步骤操作:

nx.closeness_centrality(G, u='A')

结果等于0.4。同样,nx.closeness_centrality(G, u='B') 给你 0.5714285714285714.

Networkx 引入了一种新形式的中心性,称为 Group Centrality,它计算一组节点的中心性。举例来说,如果你想计算 Networkx 中 3 个节点的中心性,引入的功能将计算这 3 个节点的所需中心性并给你一个数字(只有一个数字),表明3 个节点的综合中心性。为了计算节点的中心性,应将其视为一个组。因此,它的中心性可以单独计算。基于以上问题,我们可以计算出所有节点的介数中心性如下:

G = nx.Graph()
G.add_nodes_from(['A', 'B', 'C', 'D', 'E'])
G.add_edges_from([('A', 'B'), ('B','C'), ('C', 'D'), ('D', 'E')])
bw_centrality = nx.betweenness_centrality(G, normalized=True)
print (bw_centrality)

上面的代码产生以下结果:

{'A': 0.0, 'B': 0.5, 'C': 0.6666666666666666, 'D': 0.5, 'E': 0.0}

现在,我们使用组中心性特征来计算节点C的中心性,如下:

nx.group_betweenness_centrality(G, ['C'])

节点Cbetweenness计算结果等于0.6666666666666666。访问以下 link 了解更多信息: https://networkx.org/documentation/stable/reference/algorithms/centrality.html