我有一个关于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')发布于 2018-06-25 05:10:20
我是在自己寻找答案后才发现这个问题的。对我来说起作用的只是在Pagerank参数旁边添加weight=True命令,例如,为网络中的所有节点建立页面排名分数:
pagerank_dict = dict(nx.pagerank(G, weight=True)唯一的问题可能是您正在使用与我不同的方法来读取您的边缘列表。我建议使用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)https://stackoverflow.com/questions/49611368
复制相似问题