Что делает параметр «вес» функции Page Rank в NetworkX? - PullRequest
0 голосов
/ 04 июля 2018

Согласно этому посту , веса взвешенного орграфа влияют на Page Rank графика. Я пробовал код в этой записи :

from networkx.algorithms.link_analysis.pagerank_alg import pagerank_numpy
ddd=nx.DiGraph()
ddd.add_weighted_edges_from([('A','B',0.5),('A','C',0.5)])
print(pagerank_numpy(ddd))
ddd['A']['C']['weight']=1
print(pagerank_numpy(ddd))  

>>> {'A': 0.2597402597402597, 'B': 0.37012987012987014, 'C': 0.37012987012987014}
>>> {'A': 0.2597402597402599, 'B': 0.3333333333333334, 'C': 0.40692640692640686}

Однако, в то же время, pagerank_numpy имеет параметр с именем weight. Согласно документации :

weight (ключ, необязательно) - ключ данных Edge для использования в качестве веса. Если Нет, веса установлены в 1.

В приведенном выше примере weight не установлен, но не похоже, что все веса установлены на 1. Итак, что на самом деле делает этот параметр weight?

Версия NetworkX: 2.1

1 Ответ

0 голосов
/ 04 июля 2018

Алгоритм PageRank назначает веса узлам в соответствии со случайным обходом сети. Мы можем модифицировать алгоритм, смещая прогулку, чтобы следовать некоторым ребрам больше, чем другим. Для этого мы взвешиваем ребра сети. Networkx очень гибок в отношении веса ребер. У нас могут быть веса с именем 'weight' или 'scale_factor' или 'relative_frequency' или любая строка, которую мы хотим назвать им. Таким образом, алгоритм PageRank должен знать, какое имя использовать.

Это то, что вы говорите алгоритму, когда передаете ему параметр weight. Если он этого не получает, он обрабатывает все ребра как имеющие вес 1.

...