NetworkX中“页面排名”功能的参数“权重”有什么作用?

时间:2018-07-04 16:18:54

标签: python networkx pagerank

根据此post,加权有向图的权重会影响该图的页面排名。我已经尝试过该post中的代码:

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的参数。根据{{​​3}}:

  

weight(键,可选)–用作权重的边缘数据键。如果“无”权重设置为1。

在上面的示例中,未设置weight,但似乎权重都未全部设置为1。那么,此参数weight的作用是什么?

NetworkX的版本:2.1

1 个答案:

答案 0 :(得分:0)

PageRank算法根据网络上的随机游走向节点分配权重。我们可以通过使步行偏向某些边缘而不是其他边缘来修改算法。为此,我们对网络的边缘进行加权。 Networkx在边缘权重方面非常灵活。我们可以使用名称为'weight''scale_factor''relative_frequency'的权重,也可以使用我们要为其命名的任何字符串。因此,PageRank算法需要知道要使用哪个名称。

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