我正在处理线性回归涉及一个大的稀疏矩阵。如果我直接用矩阵作为常规矩阵计算,处理时间会很长。我发现我可能需要先将矩阵转换为“dgCMatrix”,但我不知道如何使用这种“dgCMatrix”矩阵进行计算。
例如,
M<-matrix(c(0,0,0,1,0,0,0,1,1,1,0,0), nc=4)
A<-c(1,2,3,4)
M<-as(M, "sparseMatrix")
str(M)
Formal class 'dgCMatrix' [package "Matrix"] with 6 slots
..@ i : int [1:4] 0 1 2 0
..@ p : int [1:5] 0 0 1 3 4
..@ Dim : int [1:2] 3 4
..@ Dimnames:List of 2
.. ..$ : NULL
.. ..$ : NULL
..@ x : num [1:4] 1 1 1 1
..@ factors : list()
px<-as.integer(x@p + 1)
ix<-as.integer(x@i + 1)
x<-as.double(x@x)
然后我不知道如何继续。如何使用dgCMatrix稀疏矩阵信息以更有效的方式使用这些信息来进行矩阵运算(例如,如下所示的乘法,加法,减法等)。
M%*%A
3 x 1 Matrix of class "dgeMatrix"
[,1]
[1,] 6
[2,] 3
[3,] 3
感谢您的帮助。
答案 0 :(得分:0)
您的自变量矩阵是否稀疏?如果是这样,您可以使用MatrixModels包非常有效地执行线性回归:
MatrixModels:::lm.fit.sparse(M, A)
答案 1 :(得分:0)
dtm <-dtm [,colSums(dtm)> 15] 如果您有文档矩阵,则可以通过设置数量
来减少稀疏