PageRank для проблемы с взвешенным графиком

У меня вопрос о том, как 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')

person Skye    schedule 02.04.2018    source источник


Ответы (1)


Я только что наткнулся на это после того, как сам искал ответ. Что сработало для меня, так это простое добавление команды weight=True вместе с параметрами PageRank, например. для построения рейтинга страницы для всех узлов в сети:

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)
person Laurie    schedule 24.06.2018