我花了几个小时阅读使用ff包,但还没有掌握这个主题。 基本上,我想对大数据进行分析并保存分析中的结果/统计数据。
我在我的数据集上使用biglm修改了在ff包中编写的示例代码。 http://cran.r-project.org/web/packages/ff/ff.pdf 问题与此问题非常相似 Modeling a very big data set (1.8 Million rows x 270 Columns) in R
以下是我的代码
library(ff)
library(ffbase)
library(doSNOW)
registerDoSNOW(makeCluster(4, type = "SOCK"))
memory.limit(size=32000)
setwd('Z:/data')
wd <- getwd()
data.path <- file.path(wd,'ffdb')
data.path.train <- file.path(data.path,'train')
ff.train <- read.table.ffdf(file='train.tsv', sep='\t')
save.ffdf(ff.train, dir=data.path.train)
library(biglm)
# Here I'm implementing biglm model on ffdf data
# Vi represents the column names
form <- V27 ~ V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10 + V11 + V12 + V13 + V14 + V15
ff.biglm <- for (i in chunk(ff.train, by=500)){
if (i[1]==1){
message("first chunk is: ", i[[1]],":",i[[2]])
biglmfit <- biglm(form, data=ff.train[i,,drop=FALSE])
}else{
message("next chunk is: ", i[[1]],":",i[[2]])
biglmfit <- update(biglmfit, ff.train[i,,drop=FALSE])
}
}
运行上面的代码时,它会显示以下错误消息:
第一个块是:1:494错误:无法分配大小为19.4 Gb In的向量 另外:有50个或更多警告(使用警告()来查看 第一次50)
这个关于biglmfit大小的错误信息是否适合内存? 有什么方法可以将biglmfit保存到ffdf数据类型中? 或者就此而言,有没有办法将分析统计数据存储到块中的ffdf类型? 谢谢。
编辑:
vmode(ff.train)
V1 V2 V3 V4 V5 V6 V7 V8 V9
V10
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
V11 V12 V13 V14 V15 V16 V17 V18 V19 V20
"integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer" "integer"
V21 V22 V23 V24 V25 V26 V27
"integer" "integer" "integer" "integer" "integer" "integer" "integer"