统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现
生活随笔
收集整理的這篇文章主要介紹了
统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PageRank迭代算法、冪法、代數算法
import numpy as npclass PageRank:def __init__(self,M,D=0.85):self.M = np.array(M)self.D = Dself.n = self.M.shape[0]def iter_way(self,max_iter=100,e=1e-3):self.R = np.ones(self.n)/self.ndm = self.M * self.Dsmooth = (1-self.D)/self.n*np.ones(self.n)for iter in range(max_iter):old_R = self.Rself.R = dm.dot(self.R) + smoothif np.sum(np.abs(self.R - old_R)) < e:print("change_small")breakdef power_way(self,max_iter=100,e=1e-3):self.X = np.ones(self.n)/self.nself.A = self.D*self.M + np.ones((self.n,self.n))*(1-self.D)/self.nfor iter in range(max_iter):old_x = self.Xself.X = self.norm(self.A.dot(self.X))if np.sum(np.abs(self.X - old_x)) < e:print("change_small")breakfor col in range(self.n):self.X = self.X / np.sum(self.X)self.R = self.Xdef math_way(self):self.R = np.linalg.inv(np.identity(self.n) - self.D*self.M).dot((1-self.D)/self.n*np.ones(self.n))@staticmethoddef norm(y):return y/np.max(y)def fit(self,max_iter=100,e=1e-3,way='power'):if way == 'power':self.power_way(max_iter,e)if way == 'iter':self.iter_way(max_iter,e)if way == 'math':self.math_way()def main():M = np.array([[0,0,1],[1/2,0,0],[1/2,1,0]])pageR = PageRank(M)pageR.fit(max_iter=100,e=1e-3,way='power')print(pageR.R)pageR.fit(max_iter=100,e=1e-3,way='iter')print(pageR.R)pageR.fit(max_iter=100,e=1e-3,way='math')print(pageR.R)if __name__ == '__main__':main()#---result-------------------- change_small [0.3878706 0.21474832 0.39738108] change_small [0.38791074 0.21486207 0.39722719] [0.38778971 0.21481063 0.39739966] 與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 统计学习方法第二十章作业:潜在狄利克雷分
- 下一篇: 【长文本处理】长文本划窗分割算法