2

我最近做了一个项目,我计算了一个有大约 50 万个节点和 120 万条边的网络的 PageRank(以及 HITS 和各种中心性分数)。我使用 Networkx python 包计算了 PageRank 分数,然后使用线性回归对相当可靠的外部数据源进行了测试。未加权分数与外部数据密切相关,但我很困惑地发现,无论我如何加权图中的边缘,加权的 PageRank 分数都得出相同的值(具有高精度浮点数),并且它们没有相关性完全没有外部数据。我试图弄清楚我的代码在添加我没有注意到的边缘时是否有一些错误,或者在足够次数的迭代后,无论边缘权重如何,PageRank 是否实际上可能收敛到相同的值,

是否有可能我的边缘确实在每次运行时加权不同,但 PageRank 产生了相同的值?还是我的网络边缘出了问题?

谢谢你。

编辑:其他 PageRank 问题似乎解释了所有传出的权重都必须标准化,我绝对没有这样做。我的权重都是整数,比如 4、10、15 等。这可能是问题所在吗?

4

1 回答 1

2

也许就是这样?

networkx.pagerank() 函数的默认调用参数指定算法应使用“权重”属性。如果您在边缘上有一个“权重”属性但想忽略它,请选择权重=无。例如

In [1]: import networkx as nx

In [2]: G = nx.DiGraph()

In [3]: G.add_edge(1,2,weight=7.0)

In [4]: G.add_edge(1,3,weight=70.0)

In [5]: nx.pagerank(G)
Out[5]: {1: 0.259740259292235, 2: 0.27981109766708, 3: 0.460448643040685}

In [6]: nx.pagerank(G,weight=None)
Out[6]: {1: 0.259740259292235, 2: 0.3701298703538825, 3: 0.3701298703538825}

In [7]: nx.pagerank(G,weight='weight')
Out[7]: {1: 0.259740259292235, 2: 0.27981109766708, 3: 0.460448643040685}
于 2013-07-31T20:54:52.467 回答