首页 > 解决方案 > 是否可以使用分块距离矩阵运行聚类算法?

问题描述

我有一个在循环中计算并存储在 ROM 中的距离/相异矩阵(30K 行 30K 列)。

我想对矩阵进行聚类。我将其导入并聚类如下:

Mydata<-read.csv("Mydata.csv")
Mydata<-as.dist(Mydata)
Results<-hclust(Mydata)

但是当我将矩阵转换为dist对象时,出现 RAM 限制错误。我该如何处理?我可以hclust在循环/分块中运行算法吗?我的意思是我将距离矩阵分成块并循环运行它们?

标签: rcluster-analysishclust

解决方案


您可以尝试以下方法:

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 在您自己的计算机中读取它)。


推荐阅读