我有一个在循环中计算并存储在 ROM 中的距离/相异矩阵(30K 行 30K 列)。
我想对矩阵进行聚类。我将其导入并聚类如下:
Mydata<-read.csv("Mydata.csv")
Mydata<-as.dist(Mydata)
Results<-hclust(Mydata)
但是当我将矩阵转换为dist对象时,出现 RAM 限制错误。我该如何处理?我可以hclust在循环/分块中运行算法吗?我的意思是我将距离矩阵分成块并循环运行它们?
我有一个在循环中计算并存储在 ROM 中的距离/相异矩阵(30K 行 30K 列)。
我想对矩阵进行聚类。我将其导入并聚类如下:
Mydata<-read.csv("Mydata.csv")
Mydata<-as.dist(Mydata)
Results<-hclust(Mydata)
但是当我将矩阵转换为dist对象时,出现 RAM 限制错误。我该如何处理?我可以hclust在循环/分块中运行算法吗?我的意思是我将距离矩阵分成块并循环运行它们?
您可以尝试以下方法:
Mydata<-read.csv("Mydata.csv")
Mydata<-as.matrix(Mydata)
Mydata<-as.dist(Mydata)
Results<-hclust(Mydata)
阅读以下内容以跟踪您的会话中发生的事情:http: //adv-r.had.co.nz/memory.html
一般来说,这可能会有所帮助: https ://cran.r-project.org/web/packages/fastcluster/ 还有这个问题:Hclust() in R on large datasets
它还取决于您的操作系统,但也许您可以更改 RAM 限制(或者只是在具有更多 RAM 的其他计算机上运行此代码,使用 saveRDS 存储对象,然后使用 readRDS 在您自己的计算机中读取它)。