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]

统计学习方法第二十一章作业:PageRank迭代算法、幂法、代数算法 代码实现相关推荐

  1. 统计学习方法第十一章作业:随机条件场—概率计算问题、IIS/GD学习算法、维特比预测算法 代码实现

    随机条件场-概率计算问题.IIS/GD学习算法.维特比预测算法 这一章的算法不是很好写,整整研究了好几天,代码还是有点小问题,仅供参考. 用的是书上定义的特征函数. import numpy as n ...

  2. 统计学习方法第十七章作业:LSA潜在语义分析算法 代码实现

    LSA潜在语义分析算法 import numpy as np import jieba import collectionsclass LSA:def __init__(self,text_list) ...

  3. 统计学习方法第七章作业:SVM非线性支持向量机之SMO序列最小优化算法代码实现

    SMO序列最小优化算法 import numpy as np import math from sklearn.metrics import accuracy_score from sklearn.m ...

  4. 统计学习方法第六章作业:逻辑斯谛梯度下降法、最大熵模型 IIS / DFP 算法代码实现

    逻辑斯谛梯度下降法 import numpy as np import matplotlib.pyplot as pltclass logist:def __init__(self,a=1,c=Non ...

  5. 统计学习方法第五章作业:ID3/C4.5算法分类决策树、平方误差二叉回归树代码实现

    ID3/C4.5算法分类决策树 import numpy as np import math class Node:def __init__(self,feature_index=None,value ...

  6. 统计学习方法第三章作业:一般k邻近、平衡kd树构造、kd树邻近搜索算法代码实现

    一般k邻近 import numpy as np import matplotlib.pyplot as pltclass K_near:def __init__(self,X,Y,K=5,p=2): ...

  7. 统计学习方法第十八章作业:PLSA 概率潜在语义分析算法 代码实现

    PLSA 概率潜在语义分析 import numpy as np import collections import jiebaclass PLSA:def __init__(self,text_li ...

  8. 《统计学习方法》学习笔记 第二十一章 PageRank算法

    目录 1 PageRank的定义 1.1 基本想法 1.2 有向图和随机游走模型 1 有向图(directed graph) 2 随机游走模型 3 PageRank的基本定义 4 PageRank的一 ...

  9. 数字图像处理:第二十一章 视频压缩标准

    第二十一章视频压缩标准 目录 引言 H.261标准 MPEG-1标准 MPEG-2标准 MPEG-4标准 MPEG-7标准 作业 1. 引言 视频压缩标准是多媒体领域中的重要内容,针对视频会议.网络通 ...

最新文章

  1. 第一个python程序:定义,列表,元组,集合,求并集交集,键和值,运算符,缩进
  2. ISA2006标准版,本地主机不能上网问题的解决一例
  3. Java解析SQL记录为JSON_Oracle解析复杂json的方法
  4. excel:替换问号?时会所有数据被替换掉(通配符问题)
  5. Vue3导入Vue-router报错:Uncaught SyntaxError: The requested module does not provide
  6. 微信小程序源码下载链接
  7. 前端学习(2653):对比vue2中的实现
  8. a标签点击事件_html常用标签
  9. 计算机网络训练参考文献,计算机网络实用技术教学方法的研究
  10. 蓝桥杯 ADV-63 算法提高 利息计算
  11. SQL 关于提示SQL Server 2008评估期已过解决办法
  12. WPF使用中知识点总结一
  13. hasp运行不成功_国内首条ZA-PPV电缆成功运行50天 新电缆有啥不一样?
  14. Render to Disk
  15. HW-LCD-070 7寸液晶屏 数据手册
  16. 使用电脑热点和Fiddler对Android app进行抓包
  17. ArcGis Server10.2 授权文件教程
  18. 2021-09-08 网安实验-编码解码-九宫格键盘编码
  19. 第01章 golang语言
  20. 停车场寻车难?蓝牙5.1提供的新思路

热门文章

  1. JVM-运行时数据区
  2. linux查找文件find
  3. HDU1061-Rightmost Digit(高速功率模)
  4. [UML]UML系列——状态机图statechart diagram
  5. mantis1.18升级1.2X方法
  6. 计算机系统具有运行可靠性,计算机系统运行可靠性技术.doc
  7. sigterm信号_Golang之信号处理(Signal)
  8. python如何从一个dataframe提取相应的行组成一个新的dataframe_Python|专题(1)——数据处理常规操作集(1)...
  9. Science nature合集 2021年度上半年
  10. 动物模型:急性肝脏损伤模型的构建及选择