PageRank算法及根据航线对机场进行排序的示例分析

技术PageRank算法及根据航线对机场进行排序的示例分析本篇文章给大家分享的是有关PageRank算法及根据航线对机场进行排序的示例分析,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不

本文与大家分享一个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算法及根据航线对机场进行排序的示例分析

以上就是PageRank算法及根据航线对机场进行排序的示例分析,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/97037.html

(0)

相关推荐

  • 坐便器品牌排行,孕妇坐便器的品牌有哪些呢

    技术坐便器品牌排行,孕妇坐便器的品牌有哪些呢1坐便器品牌排行、TOTO(东陶旗下,于1917年日本,十大座便器品牌,厨卫百强企业,东陶(中国)有限公司)2、箭牌-法恩莎(乐华陶瓷旗下,中国名牌,一线牌子,坐便器十大品牌,

    生活 2021年10月23日
  • 聊天技巧,你知道聊天有哪些技巧吗

    技术聊天技巧,你知道聊天有哪些技巧吗聊天是门技术活聊天技巧,无论是在线上还是面对面聊天,都是高情商、见识广,以及表达能力优秀的综合表现,做一个会聊天的人,可以广交朋友拓展人脉,以下9个技巧,让你轻轻松松会聊天1.让对方多

    生活 2021年10月21日
  • 泰铢兑人民币,10万泰铢等于多少人民币

    技术泰铢兑人民币,10万泰铢等于多少人民币100000泰铢=17900人民币货币兑换1泰铢=0.179人民币元1人民币元=5.5871泰铢泰铢(ISO4217码泰铢兑人民币:THB)是泰国官方货币,由泰中央银行泰国银行发

    生活 2021年10月29日
  • Oracle11g RAC下ASM的管理和维护方法有哪些?

    技术Oracle11g RAC下ASM的管理与维护方法是什么这篇文章主要介绍“Oracle11g RAC下ASM的管理与维护方法是什么”,在日常操作中,相信很多人在Oracle11g RAC下ASM的管理与维护方法是什么

    攻略 2021年12月22日
  • C#如何实现汉字之间互换

    技术C#如何实现汉字之间互换今天就跟大家聊聊有关C#如何实现汉字之间互换,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。计算机中第一层的数据都是用二进制及0和1来表

    攻略 2021年11月24日
  • 姓田有涵养的男孩名字,男孩帅气有涵养的名字姓王氏

    技术姓田有涵养的男孩名字,男孩帅气有涵养的名字姓王氏帅气有涵养的王氏名字:王嘉佰姓田有涵养的男孩名字、王杰宁、王钦宁、王伦昌、王子嘉、王皓诚、王哲雨、王建宝、王俊南、王博尘、王佰星、王逸林、王钦睿、王棋嘉、王子睿、王尚翔

    生活 2021年10月24日