【问题标题】:Computing PageRank using formula by iterating through adjacency matrix通过迭代邻接矩阵使用公式计算PageRank
【发布时间】:2016-12-11 22:21:44
【问题描述】:

我在excel电子表格中创建了一个邻接矩阵,现在我需要使用传送常数T=0.15并使用以下公式计算每个页面的页面排名:

PR(W)=T/N+(1-T)(PR(W1)/O(W1)+PR(W2)/O(W2)+...PR(Wn)/O(WN))

我认为执行此操作的伪代码应该是这样的:

x=formula
for i in range(len(matrix):
 if i=1, then i==x
   else
    return 0
print(i?)

我知道它远非完美,我仍在努力解决这个问题。

我还假设我需要首先声明为公式本身创建一个单独的程序代码并声明它的变量。

用 Python 或 R 来实现这个想法会是一个令人满意的解决方案吗?或者有更好的计算页面排名的方法?

我在网络上遇到了各种可能的解决方案,但它们对我的特殊情况并没有太大帮助。

【问题讨论】:

    标签: python r matrix seo pagerank


    【解决方案1】:

    如果您的数据不是特别大,而且我认为不是,因为它在 Excel 电子表格中,您可以简单地计算准备好的矩阵 A 的第一个特征向量。让你的邻接矩阵命名为M。 R中的代码如下:

    n = ncol(M)
    B = matrix(1/n, n, n) # the teleportation matrix
    A = 0.85 * M + 0.15 * B
    ranks = eigen(A)$vectors[1] # your PageRanks
    

    如果你的矩阵更大,那么你可以使用例如来自包igraph的函数page_rank

    【讨论】:

    • 这看起来不错,非常感谢!虽然,我有一些错误信息: n = ncol(m) B = matrix(1/n, n, n) # the teleportation matrix > A = 0.85*m+0.15*B 警告信息:1: In Ops.factor( left, right) : '' 对因素 2 没有意义:在 Ops.factor(left, right) : '' 对因素没有意义 rank = eigen(A)$vectors[1] # 你的 PageRanks eigen(A) 中的错误:'eigen' 中的非方阵我对 R 没有太多经验,所以我正在努力寻找这个特殊情况的答案。矩阵是 500x500 whit 1 和 0。
    • 请忽略我最后的评论,这是我自己对数据的错误,现在我有这个输出:`ranks = eigen(A)$vectors[500] # your PageRanks > n = ncol(R) > B = matrix(1/n, n, n) # 传送矩阵 > A = 0.85 * R + 0.15 * B > ranks = eigen(A)$vectors[500] # 你的 PageRanks > print(ranks) [1] - 0.0002985959+0i` 实际有效,但我需要每个页面的 PageRanks,理想情况下它看起来像:Iteration <iteration number> <URL1><PageRank1> ... 或作为表格据我了解,$vectors[1] 是一个存储一般结果并表示的数组排名中
    猜你喜欢
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-21
    • 1970-01-01
    • 1970-01-01
    • 2018-11-19
    • 1970-01-01
    • 2017-08-06
    相关资源
    最近更新 更多