根据此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
答案 0 :(得分:0)
PageRank算法根据网络上的随机游走向节点分配权重。我们可以通过使步行偏向某些边缘而不是其他边缘来修改算法。为此,我们对网络的边缘进行加权。 Networkx在边缘权重方面非常灵活。我们可以使用名称为'weight'
或'scale_factor'
或'relative_frequency'
的权重,也可以使用我们要为其命名的任何字符串。因此,PageRank算法需要知道要使用哪个名称。
这就是您将算法传递给weight
参数时要告诉的算法。如果没有得到,它将所有边缘视为权重为1。