Устранение неполадок матрицы смежности в R - PullRequest
0 голосов
/ 08 октября 2018

Я пытаюсь построить матрицу смежности для веб-сети, чтобы определить наиболее популярный веб-сайт с помощью алгоритма PageRank.

Чтобы запустить алгоритм, мне нужно создать матрицу смежности из файла .txt, который содержит ссылки со страницы на страницу, что я и сделал с помощью пакета igraph следующим образом:

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

Чтобы иметь возможность запустить алгоритм, мне нужно сначала убедиться, что ни одна страница не имеет всех 0, связывая страницу с самим собой.Чтобы сделать это, я использовал это для цикла:

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)

Есть идеи, почему он не работает с разреженной матрицей?

...