您的位置:首页 > 其它

12.1、PageRank实例

2016-02-12 09:54 288 查看
实例一:PageRank在R中的应用

1、加载R包:

> library(igraph)

> library(dplyr)

2、随机生成具有10个对象的有向图:

> g <-random.graph.game(n=10, p.or.m=1/4, directed=T)

igraph包中的random.graph.game()函数或者erdos.renyi.game(n, p.or.m,directed)函数:根据Erdos-Renyi模型生成随机图形。n为图中的顶点数;p.or.m为以任意两点为边的概率或者图中的边数;directed图是否将被引导,默认为F。

> class(g)

[1]"igraph"

> g

IGRAPH D--- 10 26 --Erdos renyi (gnp) graph

+ attr: name (g/c),type (g/c), loops (g/l), p (g/n)

+ edges:

[1] 4-> 1 8-> 1 10-> 1 4-> 2 6-> 2 3->10 6-> 3 8-> 3 9-> 3

[10] 2-> 4 2-> 5 4-> 5 5->10 2-> 6 3-> 6 5-> 6 2-> 7 4-> 7

[19] 6-> 7 7->10 1-> 8 4-> 8 5-> 8 2-> 9 7-> 9 10-> 9

3、画有向图:

> plot(g)

4、计算PageRank:

> pr <-page.rank(g)

igraph包中的page.rank(graph)函数:PageRank算法。graph对象。

> pr

$vector

[1] 0.13658175 0.05204791 0.199281490.02384814 0.02790233

[6] 0.11644844 0.06089605 0.143054330.10645844 0.13348112

$value

[1] 1

$options

NULL

> str(pr)

List of 3

$ vector : num [1:10] 0.1366 0.052 0.19930.0238 0.0279 ...

$ value : num 1

$ options: NULL

> summary(pr)

Length Class Mode

vector 10 -none- numeric

value 1 -none- numeric

options 0 -none- NULL

5、显示每个对象的PageRank:

> df <-data.frame(Object=1:10, PageRank=pr$vector)

> df

Object PageRank

1 1 0.13658175

2 2 0.05204791

3 3 0.19928149

4 4 0.02384814

5 5 0.02790233

6 6 0.11644844

7 7 0.06089605

8 8 0.14305433

9 9 0.10645844

10 10 0.13348112

> arrange(df, desc(PageRank)) 按PageRank降序排列

Object PageRank

1 3 0.19928149

2 8 0.14305433

3 1 0.13658175

4 10 0.13348112

5 6 0.11644844

6 9 0.10645844

7 7 0.06089605

8 2 0.05204791

9 5 0.02790233

10 4 0.02384814

dplyr包中的arrange(.data,…)函数:按变量排列成行,可以使用desc来降序排列变量。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: