0

我有一个庞大的数据集(200,000 rows * 40 columns),其中每一行代表一个观察值,每一列都是一个变量。对于这个数据,我想做hierarchical clustering. 不幸的是,由于行数很大,所以使用我的计算机不可能做到这一点,因为我需要计算所有观察对的距离矩阵所以(200,000 * 200,000)矩阵。

这个问题的答案建议首先使用kmeans 计算中心的数量,然后hierarchical clustering使用库对这些中心的坐标执行FactoMineR

问题:应用相同的方法时,我不断收到错误消息!

#例子

# Data
MyData <- rbind(matrix(rnorm(70000, sd = 0.3), ncol = 2),
           matrix(rnorm(70000, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")

kClust_MyData <- kmeans(MyData, 1000, iter.max=20)
Hclust_MyData <- HCPC(kClust_MyData$centers, graph=FALSE, nb.clust=-1)
plot.HCPC(Hclust_MyData, choice="tree")

Error in catdes(data.clust, ncol(data.clust), proba = proba, row.w = res.sauv$call$row.w.init) : 
  object 'data.clust' not found
4

1 回答 1

0

fastcluster有一个方法hclust.vector,它不需要距离矩阵作为输入,而是以更节省内存的方式计算距离本身。来自 fastcluster 手册:

该调用
hclust.vector(X, method='single', metric=[...])
等效于
hclust(dist(X, metric=[...]), method='single')
但使用更少的内存并且同样快

于 2020-10-21T13:51:20.050 回答