【发布时间】:2018-10-31 01:48:42
【问题描述】:
我们的数据集包含超过 100 个样本收集的 50K+ 基因表达。此 csv 文件的大小仅为 70MB。在 R local 上运行会出现错误:下面第 6 行的“无法分配大小为 22gb 的向量”。这是编写的代码:
data=as.matrix(read.table("geneExp.csv.csv", row.names = 1, header =T, sep = ','))
logdata=log2(data)
t_logdata=t(logdata)
output=/* the output label vectors 0 or 1 */
library(MASS)
lda.fit=lda(output~., data=as.data.frame(t_logdata), CV=TRUE)
summary(lda.fit)
LDA 也被尝试作为一种降维方法,仅用于实验目的。这是数据的快照: - 行是基因,列是样本。 我们找不到一篇全面的在线帖子,涵盖了编写 R 代码(例如使用 cloudml_train(file="train.R") 提交的那个)在云上运行它。我们已经尝试使用来自 rstudio 的 cloudml,但它退出时出现错误。也许这段代码不适合在 cloudml 上运行?是否应该将其更改为 tensorflow 代码?在云上运行 LDA 模型的示例会有所帮助。谢谢。
【问题讨论】:
-
"Cannot allocate vector of size" 意味着机器没有足够的内存来做你想做的事。您的数据集似乎没有那么大,但我不确定
lda需要哪些资源。此外,您的代码正在将data从数据帧(read.table的输出)转换为矩阵,然后再转换回数据帧。这是浪费和不必要的。 -
谷歌搜索“线性判别分析 R 内存”会出现 this package。我不知道它是否有用,但 SO 是针对特定编程问题的问题 - 不是针对教程材料指针的请求...
-
@BenBolker 当然,很抱歉。我已经相应地编辑了问题。
-
@neilfws 谢谢。是的,数据集只有几 MB。感谢代码审查评论。
-
这有帮助,但恐怕这个问题仍然很模糊/广泛。如果您尝试过Cloud ML 并遇到了麻烦,为什么不使用具体的细节来编辑您的问题呢? This paper 有一些关于 LDA 内存强度的信息。
标签: r machine-learning bigdata