物联202 邱郑思毓 2008070213
作业要求:用python实现谷歌的pagerank算法
完成情况:
我参考了基于Python实现的PageRank算法_紧到长不胖的博客-CSDN博客_pagerank算法python实现
中的具体思想,发现和老师上课的时候讲的方法大致相同,在此基础上添加了我个人的对程序的理解,得出结果。
import numpy as np
#输入由题目得到的矩阵
M = np.array([[0, 0, 0, 0, 0, 0],
[1, 0, 0, 0, 0, 1],
[1, 1, 0, 1, 0, 0],
[1, 1, 1, 0, 0, 1],
[0, 0, 0, 0, 0, 0, ],
[0, 1, 0, 1, 1, 0]], dtype=float)
#定义转移矩阵
def move_matrix(m):
num = m.sum(axis=0) # 统计每一列的总数,也就是和该网页连接的数目
return m / num #得到1除以相应的总数
def V(c):
pr = np.ones((c.shape[0], 1), dtype=float) / len(c) #建立一个1的矩阵
return pr
def PR(p, m, v):
i = 0
while 1:
v1 = p * np.dot(m, v) + (1 - p) * v
if np.abs((v - v1).all()) < 0.001:
break
else:
v = v1
i += 1
if i == 20: break#迭代求20次
return v
M1 = move_matrix(M)
V1 = V(M1)
a = 0.85
print('最后迭代网页PR值结果为:\n', PR(a, M1, V1))
结果为: