使用python';s networkX计算个性化页面排名

使用python';s networkX计算个性化页面排名,python,graph,networkx,pagerank,Python,Graph,Networkx,Pagerank,我试图构建一个有向图,并在这个图上计算个性化页面排名。假设我有一个顶点为{1,2,3,4}且边从2,3,4到顶点1的图,我想: (1) 计算每个顶点相对于1的个性化页面排名 (2) 计算每个顶点相对于2的个性化页面排名 问题是我应该如何在个性化页面排名函数中传递此选项。以下代码似乎不能满足我的要求: import networkx as nx G = nx.DiGraph() [G.add_node(k) for k in [1,2,3,4]] G.add_edge(2,1) G.add_e

我试图构建一个有向图,并在这个图上计算个性化页面排名。假设我有一个顶点为
{1,2,3,4}
且边从2,3,4到顶点1的图,我想:

(1) 计算每个顶点相对于1的个性化页面排名

(2) 计算每个顶点相对于2的个性化页面排名

问题是我应该如何在个性化页面排名函数中传递此选项。以下代码似乎不能满足我的要求:

import networkx as nx

G = nx.DiGraph()

[G.add_node(k) for k in [1,2,3,4]]
G.add_edge(2,1)
G.add_edge(3,1)
G.add_edge(4,1)


ppr1 = nx.pagerank(G,personalization={1:1, 2:1, 3:1, 4:1})
ppr2 = nx.pagerank(G,personalization={1:2, 2:2, 3:2, 4:2})
现在
ppr1==ppr2
,即使不应该是这样

================================================================== 更新

针对下面的评论,我对个性化页面排名的理解来自以下方面:

一个等价的定义是随机游动起始点的终端节点 从s。设(X0,X1,…,XL)为从长度的X0=s开始的随机游动 L∼ 几何(α)。我在这儿∼ 几何(α)我们的意思是Pr[L=
]=(1−α)
a。这 walk从s开始,并在每一步执行以下操作:使用概率α,终止; 剩余概率为1− α、 继续随机选择一个 当前节点。这里,如果当前节点是u,则为随机邻居v∈ N out(u)是 如果图是加权图或均匀概率图,则选择概率wu,v 1/dout(u)如果图形未加权。那么任意节点t的PPR就是概率 这条路停在t:

可在本论文第6页找到:


因此,我假设我在计算“t相对于s的个性化页面排名”时所寻找的是,如果我们按照上述过程从s开始随机游动,那么游动在t终止的概率是多少

在PageRank的概念中,一个随机的冲浪者在以下链接中移动。在每一步中,浏览者进入随机页面的概率都不是零(而不是跟随链接)。如果随机页面的选择是加权的,则称为个性化PageRank

在您的情况下,您希望跳转到单个特定页面。因此,您需要告诉它,当冲浪者跳跃而不是跟随边缘时,所有其他页面在这些步骤中被选中的概率为零

ppr1 = nx.pagerank(G,personalization={1:1, 2:0, 3:0, 4:0})
ppr2 = nx.pagerank(G,personalization={1:0, 2:1, 3:0, 4:0})

在PageRank中,你必须解释你所说的“关于……的个性化”是什么意思,有可能统一跳转到一个随机页面。networkx中的
个性化设置
允许跳转在不同页面上具有不同的登录概率。在第一种情况下,所有页面的权重为1,因此跳转是均匀的。在第二种情况下,所有页面的权重都为2,因此跳转也是均匀的。因此,两者都给出了相同的结果(如果你根本不指定权重,结果也会一样)。@Joel刚刚补充了更多的相关信息。