You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于加权边列表计算centrality score(中心性得分)

加权边列表计算中心性得分实操方案

环境准备

你可以用Python的networkx库快速实现,先安装依赖:

pip install networkx pandas

代码实现步骤

1. 构造图结构

假设你已经把边列表存为DataFrame,列名分别为from(源节点)、to(目标节点)、weight(边权重),直接用以下代码构造图:

import pandas as pd
import networkx as nx

# 这里是你给出的示例数据构造,实际使用时直接替换为你自己的DataFrame即可
edge_df = pd.DataFrame({
    "from": [1, 3, 1, 4, 1, 6],
    "to": [2, 5, 4, 1, 3, 2],
    "weight": [1, 1, 1, 3, 2, 1]
})

# 构造加权有向图,若你的边无方向属性,把nx.DiGraph()替换为nx.Graph()即可
G = nx.from_pandas_edgelist(
    edge_df,
    source="from",
    target="to",
    edge_attr="weight",
    create_using=nx.DiGraph()
)

2. 计算常用加权中心性指标

新手常用的4类中心性计算代码如下:

  • 加权度中心性:统计节点所有关联边的权重总和,直接反映节点的连接规模
# 总加权度,如需单独统计入度/出度,替换为G.in_degree(weight="weight")或G.out_degree(weight="weight")
weighted_degree = dict(G.degree(weight="weight"))
  • 加权介数中心性:统计节点位于其他节点最短路径上的频率,反映节点作为信息中介的重要性
weighted_betweenness = nx.betweenness_centrality(G, weight="weight")
  • 加权接近中心性:统计节点到其他所有节点的平均最短距离的倒数,反映节点触达全网络的效率
weighted_closeness = nx.closeness_centrality(G, distance="weight")
  • 加权特征向量中心性:同时考虑节点本身的连接规模和相邻节点的重要性,反映节点在核心圈层的权重
weighted_eigenvector = nx.eigenvector_centrality(G, weight="weight")

关键注意事项

  • 先确认图的属性:如果你的业务场景中边是有方向的(比如转账、关注、单向流动关系)就用有向图,否则用无向图即可。
  • 注意权重的业务含义:如果你的权重代表连接强度(数值越大关系越紧密),计算最短路径类指标(介数、接近中心性)时,需要先把权重转换为距离值(比如用1/weight作为新的权重列),因为默认算法中权重参数代表路径距离,数值越大路径优先级越低。
  • 按需选择指标:不需要计算所有中心性,根据你的分析目标选对应指标即可,比如找连接最多的节点选度中心性,找枢纽节点选介数中心性。

内容的提问来源于stack exchange,提问作者tj judge

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 13:54:04