1

我有一个关于 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')
4

1 回答 1

0

我自己在寻找答案后才遇到这个问题。对我有用的只是在 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)
于 2018-06-24T21:10:20.090 回答