1

我花了几个小时阅读使用 ff 包,但还没有掌握这个主题。基本上,我想对大数据进行分析并保存分析的结果/统计数据。

我在我的数据集上使用 biglm 修改了用 ff 包编写的示例代码。 http://cran.r-project.org/web/packages/ff/ff.pdf 这个问题与这个问题非常相似 在 R 中建模一个非常大的数据集(180 万行 x 270 列)

下面是我的代码

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 的向量另外:有 50 个或更多警告(使用 warnings() 查看前 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" 
4

0 回答 0