【问题标题】:How to get the HITS function in R tool?如何在 R 工具中获取 HITS 功能?
【发布时间】:2015-07-06 19:47:18
【问题描述】:

我想知道如何在 R 中找到 HITS 函数。这是我的代码:

library(igraph)
library(proxy)

 A <- matrix(c(0, 1, 1, 0, 0, 0, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 
               0, 1, 0, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0),
             nrow=6, ncol=6, byrow=TRUE)

 G <- graph.adjacency(A, mode=c("directed"), weighted=NULL)

 kmax <- 6

 op <- HITS(G,kmax)

这是我得到的错误:

Error in t.default(adj) : argument is not a matrix

上面提到的HITS函数我编码了,不知道如何在大矩阵的循环函数中实现。

HITS<-function(g,k)
  { 
    adj <- get.adjacency(g) 
    nodes <- dim(adj)[1] 
    auth <- c(rep(1,nodes)) 
    hub <- c(rep(1,nodes)) 
    for(i in 1:k){ 
        t_adj <- t(adj) 
        auth <- t_adj%*%hub 
        hub <- adj%*%auth 
        sum_sq_auth <- sum(auth*auth) 
        sum_sq_hub <- sum(hub*hub) 
        auth <- auth/sqrt(sum_sq_auth) 
        hub <- hub/sqrt(sum_sq_hub) 
    } 
    result <- c(auth,hub)   
    return(result) 
}

【问题讨论】:

标签: r matrix igraph


【解决方案1】:

您可能拥有sparsematrices 选项TRUE。在调用get.adjacency 时将其显式设置为sparse=FALSE 以获得完整矩阵而不是稀疏矩阵。

> t(get.adjacency(G, sparse=F))
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,]    0    1    0    0    0    0
[2,]    1    0    1    0    1    0
[3,]    1    1    0    1    1    1
[4,]    0    1    0    0    0    0
[5,]    0    1    0    1    0    0
[6,]    0    1    0    0    0    0

否则,如果您打算处理大型图和稀疏矩阵,请安装并加载 Matrixas recommended in the docs

> library(Matrix)
> t(get.adjacency(G))
6 x 6 sparse Matrix of class "dgCMatrix"

[1,] . 1 . . . .
[2,] 1 . 1 . 1 .
[3,] 1 1 . 1 1 1
[4,] . 1 . . . .
[5,] . 1 . 1 . .
[6,] . 1 . . . .

加载Matrix 包后,HITS 算法按原样工作:

> HITS(G, 6)
[[1]]
6 x 1 Matrix of class "dgeMatrix"
          [,1]
[1,] 0.2378004
[2,] 0.3204131
[3,] 0.7613633
[4,] 0.2378004
[5,] 0.3847263
[6,] 0.2378004

[[2]]
6 x 1 Matrix of class "dgeMatrix"
          [,1]
[1,] 0.3874860
[2,] 0.6660588
[3,] 0.1147701
[4,] 0.4105226
[5,] 0.3874860
[6,] 0.2727159

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-15
    • 2021-07-28
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 2014-05-17
    • 2021-06-30
    • 1970-01-01
    相关资源
    最近更新 更多