如何使用R

时间:2018-10-31 01:48:43

标签: r machine-learning bigdata

我们的数据集由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,因为它也是一种降维方法,仅用于实验目的。这是数据的快照:enter image description here-行是基因,列是样本。 我们找不到完整的在线文章来编写R代码(例如使用cloudml_train(file =“ train.R”)提交的代码)在云上运行。尽管我们尝试使用rstudio的cloudml,但由于出现错误而退出。也许这段代码不适合在cloudml上运行?是否应该将其更改为tensorflow代码?在云上运行LDA模型的示例将有所帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

不是一个完整的答案,而是一个探索的建议(太长/格式太长,无法发表评论)。我共同破解了一个在简单的合成数据集上运行LDA的功能,目的只是想知道可以做什么(我正在一台旧版MacBook Pro上,内存小于5G的Linux VM计算机上运行此功能... )

f <- function(nr=200,nc=1e3,seed=101) {
    set.seed(seed)
    grouping <- rbinom(nr,size=1,prob=0.2)
    x <- matrix(rnorm(nr*nc),nrow=nr)
    m <- MASS::lda(x=x,grouping=grouping)
    return(m)
}

system.time(m0 <- f())     ## 1 second
system.time(m0 <- f(5e3))  ## 30 seconds
system.time(m0 <- f(8e3))  ## 48 seconds
system.time(m0 <- f(25e3)) ## 163 seconds

因此,我可以轻松获得多达200行x 25000列的数据(top报告的最大示例的内存使用率仅为25%,即1G左右),尽管事情开始比我慢一些想要。

威克姆(Wickham)的Advanced R book在内存配置方面有一些东西...