R

时间:2018-10-08 20:23:15

标签: r sparse-matrix pagerank

我正在尝试为网络网络建立邻接矩阵,以通过pagerank算法确定最受欢迎的网站。

为了运行该算法,我需要从一个.txt文件创建一个邻接矩阵,该矩阵包含页面之间的链接,我使用igraph包做了如下操作:

A_h = graph_from_data_frame(hollins)
A_h = as_adjacency_matrix(A_h)

要能够运行算法,我首先需要通过将页面链接到自身来确保没有页面具有全0。为此,我使用了此for循环:

for(i in 1:nrow(A_h)){
   if(rowSums(A_h) == 0){
     A_h[i,i] = 1}

然后,我需要通过确保行的条目总计为1来对行进行规范化:

norm_A_h = A_h/rowSums(A_h)

我尝试在虚拟的简单矩阵上执行此操作,效果很好:

T = matrix(c(0, 3, 4, 0, 8, 4, 0, 4, 5), nrow = 3, ncol = 3)
for(i in 1:nrow(T)){
  if(rowSums(T) == 0){
    T[i,i] = 1}
}
which(rowSums(A_h)==0)
T = T/rowSums(T)

但是,当我尝试在稀疏矩阵上运行它时,看起来我仍然在检查完之后仍然以所有0行结尾:

which(rowSums(A_h)==0)

关于为什么它不适用于稀疏矩阵的任何想法?

0 个答案:

没有答案