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

如何使用Python计算加权边列表的Eigenvector centrality(特征向量中心性)

加权边列表计算特征向量中心性实现方案

你可以直接用Python的networkx库完成计算,这是最简便的实现方式,具体步骤如下:

步骤1:导入依赖库

需要用到pandas处理结构化数据,networkx实现图计算:

import pandas as pd
import networkx as nx

步骤2:加载边列表数据

你可以直接使用你现有的DataFrame,也可以按照以下方式构造示例数据:

# 你提供的加权边列表数据
df = pd.DataFrame({
    "from": [1, 3, 1, 4, 1, 6],
    "to": [2, 5, 4, 1, 3, 2],
    "weight": [1, 1, 1, 3, 2, 1]
})

步骤3:构造图结构

根据你的业务需求选择有向图/无向图:

# 如果是有向图使用nx.DiGraph(),无向图替换为nx.Graph()
G = nx.from_pandas_edgelist(
    df, 
    source="from", 
    target="to", 
    edge_attr="weight", 
    create_using=nx.DiGraph()
)

步骤4:计算加权特征向量中心性

推荐使用numpy版本的计算方法,稳定性更高,适合小规模图:

# weight参数指定使用边的weight属性作为权重计算
eigen_centrality = nx.eigenvector_centrality_numpy(G, weight="weight")

# 按得分从高到低输出结果
result = pd.Series(eigen_centrality).sort_values(ascending=False)
print(result)

注意事项

  • 特征向量中心性默认要求图是强连通的,如果你使用的是有向图且存在不连通分量,结果可能不符合预期,建议先做图的连通性校验。
  • 如果你的权重值代表的是连接开销/距离(数值越高连接越弱),需要先对权重列做倒数转换再传入计算,默认逻辑是权重越高连接强度越高。
  • 如果你使用的是nx.eigenvector_centrality(幂迭代实现),需要调整max_iter和tol参数保证迭代收敛,更适合超大规模图的计算。

内容的提问来源于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.03 16:06:02