本文转载自https://blog.csdn.net/ten_sory/article/details/80927738

PageRank算法原理与Python实现

PageRank算法,即网页排名算法,由Google创始人Larry Page在斯坦福上学的时候提出来的。该算法用于对网页进行排名,排名高的网页表示该网页被访问的概率高。

该算法的主要思想有两点:

a. 如果多个网页指向某个网页A,则网页A的排名较高。

b. 如果排名高A的网页指向某个网页B,则网页B的排名也较高,即网页B的排名受指向其的网页的排名的影响。

Python实现

下面仅仅实现迭代法,代码如下,需要用到Python的numpy库用于矩阵乘法:


# 输入为一个*.txt文件,例如
# A B
# B C
# B A
# ...表示前者指向后者import numpy as npif __name__ == '__main__':# 读入有向图,存储边f = open('input_1.txt', 'r')edges = [line.strip('\n').split(' ') for line in f]print(edges)# 根据边获取节点的集合nodes = []for edge in edges:if edge[0] not in nodes:nodes.append(edge[0])if edge[1] not in nodes:nodes.append(edge[1])print(nodes)N = len(nodes)# 将节点符号(字母),映射成阿拉伯数字,便于后面生成A矩阵/S矩阵i = 0node_to_num = {}for node in nodes:node_to_num[node] = ii += 1for edge in edges:edge[0] = node_to_num[edge[0]]edge[1] = node_to_num[edge[1]]print(edges)# 生成初步的S矩阵S = np.zeros([N, N])for edge in edges:S[edge[1], edge[0]] = 1print(S)# 计算比例:即一个网页对其他网页的PageRank值的贡献,即进行列的归一化处理for j in range(N):sum_of_col = sum(S[:,j])for i in range(N):S[i, j] /= sum_of_colprint(S)# 计算矩阵Aalpha = 0.85A = alpha*S + (1-alpha) / N * np.ones([N, N])print(A)# 生成初始的PageRank值,记录在P_n中,P_n和P_n1均用于迭代P_n = np.ones(N) / NP_n1 = np.zeros(N)e = 100000  # 误差初始化k = 0   # 记录迭代次数print('loop...')while e > 0.00000001:   # 开始迭代P_n1 = np.dot(A, P_n)   # 迭代公式e = P_n1-P_ne = max(map(abs, e))    # 计算误差P_n = P_n1k += 1print('iteration %s:'%str(k), P_n1)print('final result:', P_n)

输入的input_1.txt文本内容为:

A B
A C
A D
B D
C E
D E
B E
E A

结果:

最后的一个数组,分别为A, B, C, D, E的PageRank值,其中E最高, A第二高, B和C相同均最低。

PageRank算法原理与Python实现相关推荐

  1. 数据挖掘十大算法(六):PageRank算法原理与Python实现

    参考 .PageRank算法--从原理到实现 零. PageRank算法简介 PageRank算法,即网页排名算法,由Google创始人Larry Page在斯坦福上学的时候提出来的.该算法用于对网页 ...

  2. 手把手教你EMD算法原理与Python实现(更新)

    Rose今天主要介绍一下EMD算法原理与Python实现.关于EMD算法之前介绍过<EMD算法之Hilbert-Huang Transform原理详解和案例分析>, SSVEP信号中含有自 ...

  3. python kmeans聚类 对二维坐标点聚类_Kmeans均值聚类算法原理以及Python如何实现

    第一步.随机生成质心 由于这是一个无监督学习的算法,因此我们首先在一个二维的坐标轴下随机给定一堆点,并随即给定两个质心,我们这个算法的目的就是将这一堆点根据它们自身的坐标特征分为两类,因此选取了两个质 ...

  4. 匈牙利算法原理与Python实现

    匈牙利算法原理与Python实现 今天学习一个新的算法-匈牙利算法,用于聚类结果分析,先用图表示我当前遇到的问题: 这两列值是我用不同算法得到的聚类结果,从肉眼可以看出第一列聚类为0的结果在第二列中对 ...

  5. Apriori 算法原理以及python实现详解

    Apriori 算法原理以及python实现 ​ Apriori算法是第一个关联规则挖掘算法,也是最经典的算法.它利用逐层搜索的迭代方法找出数据库中项集的关系,以形成规则,其过程由连接(类矩阵运算)与 ...

  6. LM(Levenberg–Marquardt)算法原理及其python自定义实现

    LM算法原理及其python自定义实现 LM(Levenberg–Marquardt)算法原理 LM算法python实现 实现步骤: 代码: 运行结果: LM(Levenberg–Marquardt) ...

  7. python rank_PageRank算法原理与Python实现

    一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO( ...

  8. EMD算法原理与python实现

    目录 简介 EMD算法原理 python实现EMD案例 本教程为脑机学习者Rose发表于公众号:脑机接口社区 .QQ交流群:903290195 简介 SSVEP信号中含有自发脑电和大量外界干扰信号,属 ...

  9. 统计学习方法笔记(一)-k近邻算法原理及python实现

    k近邻法 k近邻算法 算法原理 距离度量 距离度量python实现 k近邻算法实现 案例地址 k近邻算法 kkk近邻法(kkk-NN)是一种基本分类和回归方法. 算法原理 输入:训练集 T={(x1, ...

最新文章

  1. hdu1051 Wooden Sticks
  2. 《程序员代码面试指南第二版》Python实现(个人读书笔记)
  3. 【转】ABAP的坑5
  4. ios原子操作和各种锁
  5. 软件项目风险管理介绍
  6. elasticsearch,elasticsearch-service安装
  7. Linux进程核心代码怎么查看,GCOV查看arm-linux代码覆盖率
  8. 边缘设备上的实时AI人员检测:以实时模式检测视频中的人员
  9. 学习python 3 入门知识
  10. char*转为LPCWSTR
  11. 优化算法——粒子群算法(PSO)
  12. Hotdog 热狗大战
  13. foobar2000中文版官方下载【多功能的音频播放器】
  14. 如何求子网掩码,默认网关地址,网络地址
  15. 是时候要说再见了,春风十里,不如邮你!
  16. 魅族16 USB连接计算机,在魅族16x中连接电脑的方法分享
  17. flutter:掌握布局约束Constraint
  18. eclipse java swt_Eclipse swt开发环境搭建
  19. matlab获取2的整数次幂,如何快速判断正整数是2的N次幂
  20. Xcode生成IPA包

热门文章

  1. 【成神之路】集合相关面试题
  2. 一个JSP页面引入另一个JSP页面
  3. CTPAT认证辅导,TAPA FSR的要求认证仓储设备及运输营运,能带来以下好处
  4. komodo 注册机
  5. 刻意练习好好学习_如何使用刻意练习更有效地学习编程
  6. 聊一聊web worker
  7. 【NOI2022省选挑战赛 Contest11 A】魔法球(二分)
  8. Java Executor源码解析(7)—Executors线程池工厂以及四大内置线程池
  9. oracle全备提示目录名无效,是权限不够,换dba权限用户即可
  10. ventuz 云_Ventuz中的OSC协议(C#)