【发布时间】:2014-02-18 06:21:03
【问题描述】:
我收到此错误“无法在大小为 11.8 Gb 的 R 中分配向量”,因为我的桌面有 8 GB 内存,而我使用的矩阵大小为 3000x52128。
这里有什么解决方案可以避免这种内存错误吗? 即使我尝试将矩阵的大小减小为 1500x52128,我也得到了与 11.8 Gb 相同的错误和相同的大小。
那我该怎么办? 只有一种解决方案是在具有 16 GB 内存的计算机上工作?
补充说明:
运行以下命令时,出现此错误。
svmDS <- read.csv("TrainDataSet_ver1.2.csv");
model<-naiveBayes(as.factor(class)~., data=svmDS)
【问题讨论】:
-
好吧,请仔细考虑是否需要执行会创建 11.8 GB 向量的操作。您的矩阵并不是很大,因此您的代码有可能会做一些您没有预料到的事情,或者可以以不同的(更高效的)方式实现。
-
假设 8 字节值(可能是文本?),该矩阵应该约为 1.2GB。您的代码正在做其他事情,正如较小的矩阵没有进行较小的内存分配所清楚地表明的那样。如果您想要一个好的答案,您需要发布更多详细信息。
-
真的很抱歉各位。我添加了评论
-
值得注意的是,由于 R 是一个社区项目,您可以打开
naiveBayes函数并尝试根据您的目的对其进行调整。例如,有一些 R 库允许您处理 RAM 之外(在磁盘上)的数据,因此您可以根据需要编写适合您环境的函数。如果是重大改进,您甚至可以将更改提交给包维护者。
标签: r memory-management