首页 > 解决方案 > NetworkX中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 (key, optional) -- 用作权重的边缘数据键。如果 None 权重设置为 1。

在上面的例子中,weight没有设置,但似乎没有将权重都设置为 1。那么,这个参数weight究竟是做什么的呢?

NetworkX 版本:2.1

标签: pythonnetworkxpagerank

解决方案


PageRank 算法根据网络上的随机游走为节点分配权重。我们可以通过偏向行走以比其他边缘更多地遵循某些边缘来修改算法。为此,我们对网络的边缘进行加权。Networkx 对边权重非常灵活。我们可以有权重,其名称是'weight'or'scale_factor''relative_frequency'我们想要命名的任何字符串。所以 PageRank 算法需要知道使用哪个名字。

这就是您在向算法传递weight参数时告诉算法的内容。如果没有得到,它将所有边都视为权重为 1。


推荐阅读