PageRank演算法的python實現

2021-07-10 18:32:57 字數 2150 閱讀 3602

演算法原理不在贅述,請參考:

將**儲存為.py格式,預設使用的資料是**檔案所在目錄下data目錄下的 pgr_data.txt 檔案分別作為源資料輸入。以上引數可以在源**中修改,也可以使用命令列引數傳入,參考以下啟動方式:

python pagerank.py pgr_data.txt

命令中後引數為輸入資料的途徑。

**中設立了四個引數,分別為

q=0.8  ### 

size = 100 ### the size of the networks

times = 200 ### the maxmim times for iterations

error = 0.0001 ### the error used for stoping the iterations

分別為pagerank演算法的阻尼係數,網路的最大節點數,迭代最大次數,最大誤差允許。

第乙個引數直接決定了迭代的次數和最終結果的效能,最後兩個引數用來限制迭代次數

附上測試資料(請參考):

特別感謝:android路上的人

python源**如下:

__author__ = 'administrator'

import re

import sys

q=0.8 ###

size = 100 ### the size of the networks

times = 200 ### the maxmim times for iterations

error = 0.0001 ### the error used for stoping the iterations

tr_data = [[0 for i in range(size)] for j in range(size)]

sum = [0 for i in range(size)]

tr_lg = 0

st =set()

def pagerank(res):

# trans && normalize

for i in range(tr_lg):

for j in range(tr_lg):

am[i][j] = q*float(tr_data[j+1][i+1])/sum[j+1] + (1-q)/tr_lg

#print am

#for i in range(tr_lg):

err = 0

k=0while(k1:

sour = sys.argv[1]

fp=open(sour,"r")

for line in fp:

# print line

line=re.sub(r"\n\r","",line)

ls=line.split()

l=len(ls)

# print l,ls,int(ls[0]),int(ls[1])

for i in range(l):

st.add(ls[i])

tr_data[int(ls[0])][int(ls[1])] = 1

sum[int(ls[0])] += 1

tr_lg = len(st)

print "the number of websites:",tr_lg

#print sum[1:tr_lg+1]

am = [[0.0 for i in range(tr_lg)] for j in range(tr_lg)]

res = [[0 for i in range(tr_lg)] for j in range(times)]

hub = [[0 for i in range(tr_lg)] for j in range(times)]

aut = [[0 for i in range(tr_lg)] for j in range(times)]

for i in range(tr_lg):

res[0][i] = 1

hub[0][i] = aut[0][i] = float(1)/tr_lg

n = pagerank(res)

print "iteration times:",n,"\n","the result:",res[n]

fp.close()

PageRank演算法初探

pagerank演算法由segey brin和larry page在1998年發表在www7。該演算法的高效能和易使用等特點,和其他的搜尋系統相比質量更高。因此,谷 歌成為世界上最常用的搜尋引擎有很大一部分是基於此。他們借鑑了當時學術界評判 重要性的通用方法,根據 的引用次數。將這種思路對映到網頁的...

PageRank 演算法隨記

遞迴的意思是 假如現在要求c,指向c的入鏈只有b,那麼得先求b的重要度,b重要度的大小取決於指向b的入鏈以及這些入鏈的重要度。隨機 的解釋 從i這個頁面開始,它可能有di種選擇,而且他做每一種選擇的時候,選擇的概率是相同的,即他決定到下乙個頁面是乙個隨機的選擇 應該跳到那個頁面 我們把上面圖中的矩陣...

PageRank演算法核心

讀者盆友,中午好,這裡分享下pagerank演算法的核心思想。本部落格 示例均來自 演算法 algorithmes forth edition 美 robert sedgewick kevin wayne 著 謝路雲譯 s.brin 和l.page 發明的pagerank演算法,裡面非常重要的思想是...