随机游走及应用

目录

第1关:Web数据挖掘知识测验

答案:

第2关:PageRank网页排名算法

编程要求

测试说明

代码:


第1关:Web数据挖掘知识测验

答案:

第2关:PageRank网页排名算法

编程要求

本次编程的任务是: 网页ABCDE间的链接关系如下图所示:

  • 补全右侧代码片段,实现一个简单的PageRank算法:首先根据给出的链接关系图构建转移矩阵M,并将网页的PageRank值初始化并存入矩阵U中。然后通过矩阵乘法进行迭代,每次迭代进行比较,如果收敛则输出每个网页的PageRank值,否则继续迭代。 共有四处PageRank网页排名算法的关键代码需要补全,分别是:

1.根据初始图构建初始转移矩阵M: 下面给出了一个简单的网页间链接关系示意图。

根据上图我们可以构建转移矩阵M如下所示:

M = [[0, 0, 1],
     [1/2, 0, 0],
     [1/2, 1, 0]]

M的第一行代表ABC网页出链到A网页的概率,第二行代表ABC网页出链到B网页的概率,第三行代表ABC网页出链到C网页的概率。因为BC网页的出链网页只有一个,所以对应矩阵内元素值为1。由于A网页出链有两个不同的网页,故将其概率平分,对应矩阵内元素值为1/2。 2.网页的PageRank值初始化: 一般地,网页的初始PageRank值设定为1/N。 故上图网页PageRank值初始化如下所示:

U = [1 / 3, 1 / 3, 1 / 3]

3.通过矩阵乘法进行迭代 通过矩阵U不断与矩阵M相乘进行迭代更新网页的PageRank值,其中np.dot(矩阵名, 矩阵名)是矩阵乘法方法。 4.判断收敛 由于收敛的条件为迭代前后PageRank值矩阵相同,需要用U_past_none_alpha来存储上一次迭代的结果。然后通过str(U) == str(U_past_none_alpha)来判断矩阵是否相同。

测试说明

平台将对你补充的代码进行评测,正确的输出结果请在测试集中查看。

代码:

import numpy as np

#请补充代码,根据图构建转移矩阵
#********** Begin **********#
M = np.array([[0, 0, 0, 0, 1],
             [1/3, 0, 0, 0, 0],
             [1/3, 0, 0, 0, 0],
             [1/3, 1/2, 0, 0, 0],
             [0, 1/2, 1, 1, 0]])
#********** End **********#
#请补充代码,设定初始page-rank值
#********** Begin **********#
U = np.array([1/5, 1/5, 1/5, 1/5, 1/5])
#********** End **********#

U_past_none_alpha = [] #中间迭代矩阵
while True:
    # 请补充代码,通过矩阵乘法进行迭代
    #********** Begin **********#
    U = np.dot(M, U)
    #********** End **********#

    # 请补充代码,进行判断若收敛跳出循环,否则继续迭代
    #********** Begin **********#
    if str(U) == str(U_past_none_alpha):
       break
    U_past_none_alpha = U
    #********** End **********#
print('Un收敛于: ', U)


开始你的任务吧,祝你成功!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值