PageRank算法(python实现)

Python 实现的PageRank算法,纯粹使用python原生模块,没有使用numpy、scipy。这个程序实现还比较原始,可优化的地方较多。

#-*- coding:utf-8 -*-
import random

N = 8    		#八个网页
d = 0.85 		#阻尼因子为0.85
delt = 0.00001	#迭代控制变量
#两个矩阵相乘
def matrix_multi(A,B):
	result = [[0]*len(B[0]) for i in range(len(A))]
	for i in range(len(A)):
		for j in range(len(B[0])):
			for k in range(len(B)):
				result[i][j] += A[i][k]*B[k][j]
	return result

#矩阵A的每个元素都乘以n
def matrix_multiN(n,A):
	result = [[1]*len(A[0]) for i in range(len(A))]
	for i in range(len(A)):
		for j in range(len(A[0])):
			result[i][j] = n*A[i][j]
	return result

#两个矩阵相加
def matrix_add(A,B):
	if len(A[0])!=len(B[0]) and len(A)!=len(B):
		return
	result = [[0]*len(A[0]) for i in range(len(A))]
	for i in range(len(A)):
		for j in range(len(A[0])):
			result[i][j] = A[i][j]+B[i][j]
	return result 

def pageRank(A):
	e = []
	for i in range(N):
		e.append(1)
	norm = 100
	New_P = []
	for i in range(N):
		New_P.append([random.random()])
	r = [ [(1-d)*i*1/N] for i in e]
	while norm > delt:
		P = New_P
		New_P = matrix_add(r,matrix_multiN(d,matrix_multi(A,P))) #P=(1-d)*e/n+d*M'P PageRank算法的核心
		norm = 0
		#求解矩阵一阶范数
		for i in range(N):
			norm += abs(New_P[i][0]-P[i][0])
	print New_P

#根据邻接矩阵求转移概率矩阵并转向
def tran_and_convert(A):
	result = [[0]*len(A[0]) for i in range(len(A))]
	result_convert = [[0]*len(A[0]) for i in range(len(A))]
	for i in range(len(A)):
		for j in range(len(A[0])):
			result[i][j] = A[i][j]*1.0/sum(A[i])
	for i in range(len(result)):
		for j in range(len(result[0])):
			result_convert[i][j]=result[j][i]
	return result_convert

def main():
	A = [[0,1,1,0,0,1,0,0],	[0,0,0,1,1,0,0,0],	[0,0,0,1,0,1,0,0],	[0,0,0,0,0,1,0,0],	[1,0,0,1,0,0,1,1],	[0,0,0,1,0,0,0,0],	[0,0,1,0,0,0,0,0],	[0,0,0,1,0,0,1,0]]
	M = tran_and_convert(A)
	pageRank(M)

if __name__ == '__main__':
	main()
时间: 2025-01-07 07:49:55

PageRank算法(python实现)的相关文章

【大创社区划分】——PageRank算法的解析与Python实现

一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO(^_^).PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序.它的思想是模拟一个悠闲的上网者,上网者首先随机选择一个网页打开,然后在这个网页上呆了几分钟后,跳转到该网页所指向的链接,这样无所事事.漫无目的地在网页上跳来跳去,PageRank就是估计这个

【转】深入浅出PageRank算法

原文链接 http://segmentfault.com/a/1190000000711128 PageRank算法 PageRank算法是谷歌曾经独步天下的“倚天剑”,该算法由Larry Page和Sergey Brin在斯坦福大学读研时发明的, 论文点击下载: The PageRank Citation Ranking: Bringing Order to the Web. 本文首先通过一些参考文献引出问题,然后给出了PageRank的几种实现算法, 最后将其推广至在MapReduce框架下

【大创_社区划分】——PageRank算法MapReduce实现

PageRank算法的分析和Python实现参考:http://blog.csdn.net/gamer_gyt/article/details/47443877 举例来讲: 假设每个网页都有一个自己的默认PR值,相当于人为添加给它是一种属性,用来标识网页的等级或者重要性,从而依据此标识达到排名目的.假设有ID号是1的一个网页,PR值是10,假如它产生了到ID=3,ID=6,ID=8 ,ID=9这4个网页的链接.那么可以理解为ID=1的网页向ID=3,6,8,9的4个网页各贡献了2.5的PR值.如

PageRank算法简介及Map-Reduce实现

PageRank对网页排名的算法,曾是Google发家致富的法宝.以前虽然有实验过,但理解还是不透彻,这几天又看了一下,这里总结一下PageRank算法的基本原理. 一.什么是pagerank PageRank的Page可是认为是网页,表示网页排名,也可以认为是Larry Page(google 产品经理),因为他是这个算法的发明者之一,还是google CEO(^_^).PageRank算法计算每一个网页的PageRank值,然后根据这个值的大小对网页的重要性进行排序.它的思想是模拟一个悠闲的

谷歌PageRank算法

1. 从Google网页排序到PageRank算法 (1)谷歌网页怎么排序? 先对搜索关键词进行分词,如"技术社区"分词为"技术"和"社区": 根据建立的倒排索引返回同时包含分词后结果的网页: 将返回的网页相关性(类似上篇文章所讲的文本相似度)网页,相关性越高排名越靠前 (2)怎么处理垃圾网页?那么问题来了,假如有某个垃圾网页中虽然也包含大量的查询词,但却并非满足用户需要的文档,因此,页面本身的重要性在网页排序中也起着很重要的作用.(3)如何度量

PageRank 算法简介

有两篇文章一篇讲解(下面copy)< PageRank算法简介及Map-Reduce实现>来源:http://www.cnblogs.com/fengfenggirl/p/pagerank-introduction.html 另一篇<PageRank简介-串讲Q&A.docx> http://docs.babel.baidu.com/doc/ee14bd65-ba71-4ebb-945b-cf279717233b PageRank对网页排名的算法,曾是Google发家致富的

PageRank算法初探

1. PageRank的由来和发展历史 0x1:源自搜索引擎的需求 Google早已成为全球最成功的互联网搜索引擎,在Google出现之前,曾出现过许多通用或专业领域搜索引擎.Google最终能击败所有竞争对手,很大程度上是因为它解决了困扰前辈们的最大难题:对搜索结果按重要性排序.而解决这个问题的算法就是PageRank.毫不夸张的说,是PageRank算法成就了Google今天的地位. 1. 搜索引擎的核心框架 从本质上说,搜索引擎是一个资料检索系统,搜索引擎拥有一个资料库(具体到这里就是互联

MapReduce实现PageRank算法(邻接矩阵法)

前言 之前写过稀疏图的实现方法,这次写用矩阵存储数据的算法实现,只要会矩阵相乘的话,实现这个就很简单了.如果有不懂的可以先看一下下面两篇随笔. MapReduce实现PageRank算法(稀疏图法) Python+MapReduce实现矩阵相乘 算法实现 我们需要输入两个矩阵A和B,我一开始想的是两个矩阵分别存在两个文件里然后分别读取,但是我发现好像不行,无法区分打上A.B的标签. 所以我一开始就把A.B矩阵合起来存在一个文件里,一次读取. mapper.py 1 #!/usr/bin/env

pagerank算法

转自 http://blog.csdn.net/hguisu/article/details/7996185 1. PageRank算法概述 PageRank,即网页排名,又称网页级别.Google左侧排名或佩奇排名. 是Google创始人拉里·佩奇和谢尔盖·布林于1997年构建早期的搜索系统原型时提出的链接分析算法,自从Google在商业上获得空前的成功后,该算法也成为其他搜索引擎和学术界十分关注的计算模型.目前很多重要的链接分析算法都是在PageRank算法基础上衍生出来的.PageRank