本文与大家分享一个PageRank算法和按航线排序机场的实例分析。边肖认为它很实用,所以我把它分享给你学习。希望你看完这篇文章能有所收获。让我们和边肖一起看看。
1. PageRank算法
PageRank算法,即网页排名算法,是Google,创始人Larry Page,在斯坦福时提出的。该算法用于对网页进行排名,排名高的网页表示网页被访问的概率高。这个算法的主要思想有两点:
a. 如果多个网页指向某个网页A,则网页A的排名较高。
b. 如果排名高A的网页指向某个网页B,则网页B的排名也较高,即网页B的排名受指向其的网页的排名的影响。
https://blog.csdn.net/u013007900/article/details/88961913
https://blog.csdn.net/ten_sory/article/details/80927738
00-1010 input _ 1.txt内容:
西沙
锡罐
西皮克
SHAPEK
CANYIH
PEKYIH
SHAYIH
yihxi #-*-coding : utf-8-*-
'''
创建日期2008年8月31日2008年8月31日2008年8月31日2008年8月31日2008年8月31日2008年8月31日2008年8月31日2008年8
@author:pengchua
'''
#作为*输入。例如,txt文件
#AB
#公元前
#BA
# .表示前者指向后者
importnumpayasnp
if__name__=='__main__':
#读入有向图,存储边
f=开路(' input_1.txt ',' r ')
edges=[line.strip('\n ')。split(')for line INF]
打印(边缘)
#根据边获取节点集。
节点=[]
预测预算:
ifedge[0]notinnodes:
nodes.append(边[0])
ifedge[1]notinnodes:
nodes.append(边[1])
打印(节点)
N=len(节点)
#将节点符号(字母)映射为阿拉伯数字,便于后期生成A矩阵/S矩阵。
i=0
node_to_num={}
fornodeinnodes:
node_to_num[node]=i
i += 1
for 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]] = 1
print(S)
# 计算比例:即一个网页对其他网页的PageRank值的贡献,即进行列的归一化处理
for j in range(N):
sum_of_col = sum(S[:,j])
for i in range(N):
S[i, j] /= sum_of_col
print(S)
# 计算矩阵A
alpha = 0.85
A = alpha*S + (1-alpha) / N * np.ones([N, N])
print(A)
# 生成初始的PageRank值,记录在P_n中,P_n和P_n1均用于迭代
P_n = np.ones(N) / N
P_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_n
e = max(map(abs, e)) # 计算误差
P_n = P_n1
k += 1
print('iteration %s:'%str(k), P_n1)
print('final result:', P_n)
final result: [0.29633859 0.1139626 0.1139626 0.1623967 0.31333951]
networkx在2002年5月产生,是一个用Python语言开发的图论与复杂网络建模工具,内置了常用的图与复杂网络分析算法,可以方便的进行复杂网络数据分析、仿真建模等工作。
利用networkx可以以标准化和非标准化的数据格式存储网络、生成多种随机网络和经典网络、分析网络结构、建立网络模型、设计新的网络算法、进行网络绘制等。
##基于networkx 进行pageRank计算 # -*- coding: utf-8 -*- """ Created on Tue Aug 11 21:38:58 2020 @author: pengchua """ import networkx as nx import matplotlib.pyplot as plt if __name__ == '__main__': # 读入有向图,存储边 f = open('input_1.txt', 'r') edges = [line.strip('\n').split(' ') for line in f] G = nx.DiGraph() for edge in edges: G.add_edge(edge[0], edge[1]) #显示图表 nx.draw(G, with_labels=True) plt.show() #计算pr值 pr=nx.pagerank(G) # page_rank_value=pr[node] for node, pageRankValue in pr.items(): print("%s,%.4f" %(node,pageRankValue))
以上就是PageRank算法及根据航线对机场进行排序的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/97037.html