Igo*_*nov 6 r ranking dataframe ehcache-bigmemory r-bigmemory
我最近开始使用R进行数据分析.现在我在排序一个大的查询数据集时遇到了问题(在ASCII模式下约为1 GB,在我的笔记本电脑的二进制模式下的4GB RAM中).使用bigmemory::big.matrix
此数据集是一个很好的解决方案,但在gbm()
或randomForest()
算法中提供这样的矩阵"m" 会导致错误:
cannot coerce class 'structure("big.matrix", package = "bigmemory")' into a data.frame
Run Code Online (Sandbox Code Playgroud)
class(m)输出如下:
[1] "big.matrix"
attr(,"package")
[1] "bigmemory"
Run Code Online (Sandbox Code Playgroud)
有没有办法正确地将big.matrix
实例传递给这些算法?
jor*_*ran 11
我显然无法使用您的比例数据进行测试,但我可以使用每个函数的公式接口重现您的错误:
require(bigmemory)
m <- matrix(sample(0:1,5000,replace = TRUE),1000,5)
colnames(m) <- paste("V",1:5,sep = "")
bm <- as.big.matrix(m,type = "integer")
require(gbm)
require(randomForest)
#Throws error you describe
rs <- randomForest(V1~.,data = bm)
#Runs without error (with a warning about the response only having two values)
rs <- randomForest(x = bm[,-1],y = bm[,1])
#Throws error you describe
rs <- gbm(V1~.,data = bm)
#Runs without error
rs <- gbm.fit(x = bm[,-1],y = bm[,1])
Run Code Online (Sandbox Code Playgroud)
不使用公式接口randomForest
是大数据集的相当常见的建议; 它可能效率很低.如果您阅读?gbm
,您会看到类似的建议,也可以指导gbm.fit
大型数据.