【问题标题】:PageRank for weighted graph issue加权图问题的 PageRank
【发布时间】:2018-04-02 12:32:34
【问题描述】:

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

【问题讨论】:

    标签: pagerank weighted-graph


    【解决方案1】:

    我自己在寻找答案后才发现这个问题。对我有用的只是在 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-29
      • 2011-06-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-26
      相关资源
      最近更新 更多