国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

一篇學會 PageRank 算法與實踐

開發 前端
PageRank通過網絡浩瀚的超鏈接關系來確定一個頁面的等級。Google把從A頁面到B頁面的鏈接解釋為A頁面給B頁面投票,Google根據投票來源(甚至來源的來源,即鏈接到A頁面的頁面)和投票目標的等級來決定新的等級。

如果讓我們自己去做搜索的話,我們能夠想到的是文章和搜索詞的相關性,以此來判斷這個文章是否是我們想要的,最開始的搜索有的是這樣做的,還有的是按照網站的種類做個大的索引表,但是可以索引的關鍵字有限。

互聯網上的網頁估計有千百億規模了(猜測),那么顯然不是所有包含搜索關鍵字的網頁都同等重要。有的在標題中包含關鍵字,有的在文檔中包含關鍵字;有的是權威機構網站,有的是個人博客,顯然在給用戶返回網頁的時候,比較重要的網頁的應該排在前面,不重要的網頁信息排在后面。那又來一個問題,如何確定一個網頁的重要性那。

網頁是通過鏈接來組織的,那么我們可以把整個互聯網看成一張大的圖,每個節點為一個個網頁,網頁之間的鏈接看成邊。網頁是否重要,要看是否有多個網頁鏈接到它。被越多網頁鏈接的網頁越重要,當然鏈接這個網頁的多個鏈接的重要性又是不相同的。

假設我們搜索得到很多網頁,其中一個網頁Y的排名應該來自所有指向這個網頁X1,X2,X3的權重之和:

Y網頁的權重 = X1+X2+X3...+Xn

而X1,X2,...Xn的權重分別是多少,如何度量,這又需要通過鏈接到它的網頁的權重來計算,這樣循環往復,就無解了。據說是Google的布林破解了這個怪圈,就是開始的時候給每個網頁設置相同的初始值,那么經過多輪計算后,這個算法可以保證網頁排名多次之后回收斂到排名的真實值。

我理解下,大概是這樣子的:

第一輪的時候,我們假設所有網頁的權重都是1,那么A這個網頁的權重為1+1+1為3, 第二輪計算的時候,與A相連的網頁權重變成了2,那么最終A這個網頁的權重就變成了2+2+2=6,這樣多次計算后,被更多權重高的網頁鏈接的網頁,排名靠前,其他的靠后。

這整個過程有點類似于民主選舉,選舉過程中每個人的票的權重又是不一樣的,這和現實也很類似。 那么PageRank算法除了計算網頁排名還有什么用那,數據實戰45講里面,有個例子比較有意思,計算泄露出來希拉里郵件列表中的人物影響力的情況,通過python的networkx庫可以方便地計算PageRank的值。

下面的網絡圖的:

簡單的計算PageRank的代碼:

import networkx as nx
# 創建有向圖
G = nx.DiGraph()
# 有向圖之間邊的關系
edges = [("B1", "B"), ("B2", "B"), ("C1", "C"), ("C2", "C"), ("D1", "D"), ("D2", "D"), ("D", "A"), ("C", "A"), ("B", "A")]
for edge in edges:
G.add_edge(edge[0], edge[1])
pagerank_list = nx.pagerank(G, alpha=1)
print("pagerank值是:", pagerank_list)

結果:

整個數據集合分為三個文件:Aliases.csv,Emails.csv和Persons.csv,其中Emails文件為郵件內容,包括重要的發送者和接收者信息。 Persons文件統計郵件中所有人的姓名和對應ID。 下面代碼是數據實戰中的代碼直接拿過來了,其實過程也是比較簡單,只是這個思路比較重要。


# -*- coding: utf-8 -*-
# 用 PageRank 挖掘希拉里郵件中的重要任務關系
import pandas as pd
import networkx as nx
import numpy as np
from collections import defaultdict
import matplotlib.pyplot as plt
# 數據加載
emails = pd.read_csv("./input/Emails.csv")
# 讀取別名文件
file = pd.read_csv("./input/Aliases.csv")
aliases = {}
for index, row in file.iterrows():
aliases[row['Alias']] = row['PersonId']
# 讀取人名文件
file = pd.read_csv("./input/Persons.csv")
persons = {}
for index, row in file.iterrows():
persons[row['Id']] = row['Name']
# 針對別名進行轉換
def unify_name(name):
# 姓名統一小寫
name = str(name).lower()
# 去掉, 和 @后面的內容
name = name.replace(",","").split("@")[0]
# 別名轉換
if name in aliases.keys():
return persons[aliases[name]]
return name
# 畫網絡圖
def show_graph(graph, layout='spring_layout'):
# 使用 Spring Layout 布局,類似中心放射狀
if layout == 'circular_layout':
positions=nx.circular_layout(graph)
else:
positions=nx.spring_layout(graph)
# 設置網絡圖中的節點大小,大小與 pagerank 值相關,因為 pagerank 值很小所以需要 *20000
nodesize = [x['pagerank']*20000 for v,x in graph.nodes(data=True)]
# 設置網絡圖中的邊長度
edgesize = [np.sqrt(e[2]['weight']) for e in graph.edges(data=True)]
# 繪制節點
nx.draw_networkx_nodes(graph, positions, node_size=nodesize, alpha=0.4)
# 繪制邊
nx.draw_networkx_edges(graph, positions, edge_size=edgesize, alpha=0.2)
# 繪制節點的 label
nx.draw_networkx_labels(graph, positions, font_size=10)
# 輸出希拉里郵件中的所有人物關系圖
plt.show()
# 將寄件人和收件人的姓名進行規范化
emails.MetadataFrom = emails.MetadataFrom.apply(unify_name)
emails.MetadataTo = emails.MetadataTo.apply(unify_name)
# 設置遍的權重等于發郵件的次數
edges_weights_temp = defaultdict(list)
for row in zip(emails.MetadataFrom, emails.MetadataTo, emails.RawText):
temp = (row[0], row[1])
if temp not in edges_weights_temp:
edges_weights_temp[temp] = 1
else:
edges_weights_temp[temp] = edges_weights_temp[temp] + 1
# 轉化格式 (from, to), weight => from, to, weight
edges_weights = [(key[0], key[1], val) for key, val in edges_weights_temp.items()]
# 創建一個有向圖
graph = nx.DiGraph()
# 設置有向圖中的路徑及權重 (from, to, weight)
graph.add_weighted_edges_from(edges_weights)
# 計算每個節點(人)的 PR 值,并作為節點的 pagerank 屬性
pagerank = nx.pagerank(graph)
# 將 pagerank 數值作為節點的屬性
nx.set_node_attributes(graph, name = 'pagerank', values=pagerank)
# 畫網絡圖
show_graph(graph)

# 將完整的圖譜進行精簡
# 設置 PR 值的閾值,篩選大于閾值的重要核心節點
pagerank_threshold = 0.005
# 復制一份計算好的網絡圖
small_graph = graph.copy()
# 剪掉 PR 值小于 pagerank_threshold 的節點
for n, p_rank in graph.nodes(data=True):
if p_rank['pagerank'] < pagerank_threshold:
small_graph.remove_node(n)
# 畫網絡圖,采用circular_layout布局讓篩選出來的點組成一個圓
show_graph(small_graph, 'circular_layout')
責任編輯:武曉燕 來源: 今日頭條
相關推薦

2021-07-29 07:55:20

React實踐代碼

2023-03-13 21:38:08

TCP數據IP地址

2021-08-26 13:22:46

雪花算法隨機數

2021-09-13 09:00:03

istio安裝部署

2022-02-07 11:01:23

ZooKeeper

2022-02-21 08:48:00

Pulsar部署配置

2021-12-26 18:24:00

NginxTomcat服務

2022-01-02 08:43:46

Python

2023-12-05 07:14:27

AIGo

2021-07-02 08:51:29

源碼參數Thread

2021-10-14 10:22:19

逃逸JVM性能

2021-04-29 10:18:18

循環依賴數組

2021-09-28 08:59:30

復原IP地址

2022-04-12 08:30:52

回調函數代碼調試

2022-03-11 10:21:30

IO系統日志

2022-10-20 07:39:26

2023-11-01 09:07:01

Spring裝配源碼

2021-07-16 22:43:10

Go并發Golang

2022-11-14 08:17:56

2021-10-27 09:59:35

存儲
點贊
收藏

51CTO技術棧公眾號

麻豆91精品91久久久的内涵| 日韩欧美精品久久| 日韩专区精品| 一本—道久久a久久精品蜜桃| 久久久精品免费观看| 黄色软件在线| 亚洲奶大毛多的老太婆| 国产欧美亚洲精品a| 一区二区在线观| 一区二区三区在线观看视频| 三妻四妾完整版在线观看电视剧 | 日韩在线综合网| 黑人欧美xxxx| www.久久热| 精品一区二区三区免费毛片| 国产精品理论片在线观看| 国产在线激情视频| 日本欧美一二三区| 国产不卡视频在线观看| 国产高清一区在线观看| 欧美激情网站在线观看| 日韩专区欧美专区| hbad中文字幕| 亚洲片国产一区一级在线观看| 国产大片一区| 国产精品无码一本二本三本色| 欧美乱妇20p| 日韩精品水蜜桃| 国产三级三级三级看三级| 日韩成人av在线| 亚洲精品资源| 伊人网在线观看| 久久久久久久久久婷婷| 国产成人自拍网| 综合久久2019| 国产免费一区二区| 亚洲成av人综合在线观看| 成人av激情人伦小说| 国产a级黄色大片| 欧美成人午夜电影| 黄色亚洲免费| 三级在线播放| 欧洲亚洲免费视频| 91在线观看视频| 成人片免费看| 一区二区三区四区国产| 7777精品伊人久久久大香线蕉 | 九九热精品在线| 一级毛片在线播放| 粗暴蹂躏中文一区二区三区| 麻豆国产精品官网| 亚洲s色大片| 亚洲aaaaaa| 亚洲大片一区二区三区| 欧美日韩一区二区三区四区不卡| 99爱视频在线| 在线亚洲国产精品网| 精品无码三级在线观看视频| 国产激情在线| 999精品在线观看| 日韩欧美一区二区三区| 99精品美女| 婷婷国产在线| 91免费精品国偷自产在线| 亚洲v日本v欧美v久久精品| 久操精品在线| 美女av网站| 国产在线拍揄自揄视频不卡99 | 成人在线直播| 久久精品国产综合精品| 91精品婷婷国产综合久久性色 | 欧美激情论坛| 欧美日韩夫妻久久| 99xxxx成人网| wwwav在线| 日本一区视频在线观看| 日韩视频一区在线观看| 日韩黄色免费电影| 欧美草逼视频| 中文字幕日韩一区二区三区| 日韩精品免费在线| 成人性生交大片| 四虎影视精品永久在线观看| 黄色国产小视频| 日韩暖暖在线视频| 色哟哟在线观看一区二区三区| 在线看片一区| 女人天堂av在线播放| 三级外国片在线观看视频| 日韩电影一区二区三区| 性色a∨人人爽网站| 亚洲精品成人网| 亚洲一区在线日韩在线深爱| 亚洲成人黄色在线| 国产福利不卡视频| 91超碰在线| 2019中文字幕在线观看| 欧美亚洲一级| 国产精品视频分类| 欧美成人亚洲成人日韩成人| 色婷婷av一区二区三区软件| 一区三区自拍| 久久人人爽爽人人爽人人片av| 日韩av一级| 国产一区欧美二区三区| 日本大香伊一区二区三区| 99久久久国产精品免费蜜臀| 日本三区在线观看| 成人精品一区二区三区电影黑人| 日本一区二区久久| 成人午夜免费电影| 欧美jizzhd69巨大| 日本精品免费观看| 成人天堂资源www在线| 高潮毛片在线观看| 91在线观看免费高清完整版在线观看| av一区二区久久| 欧美女同一区| 国产精品旅馆在线| 欧美国产激情二区三区 | 亚洲综合小说区| 中文字幕欧美日韩一区| 日韩av一级| 亚洲一区二区三区涩| 欧美一区二区三区的| 激情久久婷婷| 偷拍自拍在线| 91精品视频在线免费观看| 亚洲欧美日韩在线不卡| 亚洲视频精选| 97公开免费视频| 超碰97人人做人人爱少妇| 国产激情偷乱视频一区二区三区| 岛国av在线网站| www国产无套内射com| 亚洲欧美日韩网| 国产乱码精品一区二区三区av| 性国裸体高清亚洲| 日韩精品视频在线观看视频| 在线亚洲午夜片av大片| 成人av免费观看| 国产精品一区二区美女视频免费看| 久久久久免费看黄a片app| 精品国产一区二区三区久久久| 99久久精品国产导航| 伊人www22综合色| heyzo在线观看| 91精品久久久久久久久| 在线精品视频小说1| 国产精品久久久一区二区| 男人天堂亚洲天堂| 欧美人成在线观看| 国产69精品久久久久99| 一区二区三区在线视频观看| 一区二区中文字| 在线观看中文| 今天免费高清在线观看国语| 欧美成人一二三| 一区二区三区日韩在线观看| 欧美午夜不卡| 国产777精品精品热热热一区二区| 免费看日本黄色| 国产69精品久久久久久| 色综合一个色综合亚洲| 校园激情久久| 欧美久久久网站| 可播放的18gay1069| 精品一区国产| 中文字幕免费国产精品| 综合精品久久久| 99精品热视频只有精品10| 国产亚洲一区二区手机在线观看 | 在线不卡亚洲| 日韩欧美精品一区二区三区| 亚洲乱码中文字幕久久孕妇黑人| 欧亚精品在线观看| 欧美丝袜自拍制服另类| 国产乱码一区二区三区| 日韩精品丝袜美腿| 成人video亚洲精品| 18禁免费无码无遮挡不卡网站| 久久综合精品一区| 高清一区二区三区日本久| www.国产精品一二区| 亚洲国产综合91精品麻豆| 欧美一级生活片| 精品av久久久久电影| 欧美xoxoxo| 国产男女爽爽爽| 亚洲国产精品123| 亚洲91精品在线| 欧美一区二区三区成人| 久久久五月婷婷| 夜久久久久久| 欧美三级一区| 亚洲丝袜一区| 狠狠操第一页| 久久最新免费视频| 国产一区二区丝袜| 日韩在线小视频|