MATLAB编程实例:使用PageRank算法对网站排名‌

关注微信公众号:数学建模BOOM,回复“page”,获取本文的matlab代码文件

cut-off

以下示例演示如何使用 PageRank 算法对多个网站进行排名。

在 PageRank 算法的每一步中,每个网页的得分都会根据以下公式更新:

r = (1-P)/n + P*(A'*(r./d) + s/n);

  • r 是 PageRank 得分的向量。
  • P 是标量阻尼因子(通常为 0.85),这是随机浏览者点击当前网页上的链接而不是在另一随机网页上继续点击的概率。
  • A' 是图形的邻接矩阵的转置。
  • d 是包含图形中每个节点的出度的向量。对于没有外向边的节点,d 设置为 1。
  • n 是图形中节点的标量数量。
  • s 是无链接的网页的 PageRank 得分的标量总和。

创建一个图形,用于说明每个节点如何将其 PageRank 得分赋予图形中的其他节点。

s = {'a' 'a' 'a' 'b' 'b' 'c' 'd' 'd' 'd'};t = {'b' 'c' 'd' 'd' 'a' 'b' 'c' 'a' 'b'};
G = digraph(s,t);labels = {'a/3' 'a/3' 'a/3' 'b/2' 'b/2' 'c' 'd/3' 'd/3' 'd/3'};
p = plot(G,'Layout','layered','EdgeLabel',labels);
highlight(p,[1 1 1],[2 3 4],'EdgeColor','g')
highlight(p,[2 2],[1 4],'EdgeColor','r')
highlight(p,3,2,'EdgeColor','m')
title('PageRank Score Transfer Between Nodes')

创建并绘制一个有向图,其中包含六个表示虚假网站的节点。

s = [1 1 2 2 3 3 3 4 5];
t = [2 5 3 4 4 5 6 1 1];
names = {'http://www.example.com/alpha', 'http://www.example.com/beta', ...
         'http://www.example.com/gamma', 'http://www.example.com/delta', ...
         'http://www.example.com/epsilon', 'http://www.example.com/zeta'};
G = digraph(s,t,[],names)
plot(G,'Layout','layered', ...
    'NodeLabel',{'alpha','beta','gamma','delta','epsilon','zeta'})

计算该图形的 PageRank 中心度得分。使用 0.85 的点进概率(或称为阻尼因子)。查看每个网页的 PageRank 得分和级别信息。

pr = centrality(G,'pagerank','FollowProbability',0.85)
G.Nodes.PageRank = pr;
G.Nodes.InDegree = indegree(G);
G.Nodes.OutDegree = outdegree(G);
G.Nodes

加载 mathworks100.mat 中的数据,并查看邻接矩阵 A。

load mathworks100.mat
spy(A)
G = digraph(A,U)
plot(G,'NodeLabel',{},'NodeColor',[0.93 0.78 0],'Layout','force');
title('Websites linked to https://www.mathworks.com')

本文转自mathwork帮助中心

QR Code
微信扫一扫,欢迎咨询~

联系我们
武汉格发信息技术有限公司
湖北省武汉市经开区科技园西路6号103孵化器
电话:155-2731-8020 座机:027-59821821
邮件:tanzw@gofarlic.com
Copyright © 2023 Gofarsoft Co.,Ltd. 保留所有权利
遇到许可问题?该如何解决!?
评估许可证实际采购量? 
不清楚软件许可证使用数据? 
收到软件厂商律师函!?  
想要少购买点许可证,节省费用? 
收到软件厂商侵权通告!?  
有正版license,但许可证不够用,需要新购? 
联系方式 155-2731-8020
预留信息,一起解决您的问题
* 姓名:
* 手机:

* 公司名称:

姓名不为空

手机不正确

公司不为空