我有一个问题,即Pagerank如何显示"重量"的影响。我想以贸易价值为重量来计算贸易国的Pagerank,我的代码如下所示。但是我发现的结果与未加权的结果相同。我不知道为什么。
有人可以帮助我了解如何在Pagerank计算中显示"重量"?
import networkx as nx
import os
import pandas as pd
data=pd.read_excel('f-e-2016-intermediate-use.xlsx')
G=nx.DiGraph()
teams=data.groupby(['reportercode','partnercode'])
team_names=[name for name,group in teams]
G.add_edges_from(team_names)
a_node=data.groupby(['reportercode'])
source_nodes=[name for name,group in a_node]
b_node=data.groupby(['partnercode'])
target_nodes=[name for name,group in b_node]
nodes=set(source_nodes+target_nodes)
G.add_nodes_from(nodes)
page_rank=nx.pagerank(G,weight='tradevalueus')
自己在寻找答案后遇到了这个问题。对我有用的是简单地添加权重= true命令与Pagerank参数一起添加,例如用于网络中所有节点的页面排名分数:
pagerank_dict = dict(nx.pagerank(G, weight=True)
唯一的问题可能是您使用的方法与我在edgelist中阅读。我建议使用nx.read_weighted_edgelist功能加载图形的节点和边缘数据。您的Excel文件应包含三个列,具有源节点,目标节点和边缘权重的相邻值(不包括标头,并保存在.csv格式中(。然后,您可以使用以下命令加载数据,以保证它可以与Pagerank正确使用:
G = nx.read_weighted_edgelist('f-e-2016-intermediate-use.csv', delimiter=',', create_using = nx.DiGraph(), nodetype=str)
pagerank_dict = dict(nx.pagerank(G, weight=True)