NetworkX中边权重未影响PageRank结果?买卖网络技术问询
问题原因与解决方法
问题出在NetworkX的nx.pagerank函数默认不会自动使用边的权重属性——哪怕你的图里已经存了Value这个交易金额属性,你也得显式告诉函数要用到这个权重才行。
- 默认情况下,
nx.pagerank的weight参数是None,这时候不管图里有没有边属性,都会按「每条出边的权重相等」(相当于权重为1)的规则计算PageRank。 - 你构建g2时虽然把交易金额存成了
Value边属性,但调用nx.pagerank(g2)时没指定weight='Value',所以计算逻辑和g1完全一致,结果自然相同。
修正后的代码
把带权重的PageRank调用改成这样:
pagerank_g2 = nx.pagerank(g2, weight='Value')
运行修正后的代码,你就能得到基于交易金额权重的PageRank结果,和无权重的g1结果会明显不同。
内容的提问来源于stack exchange,提问作者wggbullet
相关产品推荐
相关产品推荐

