【问题标题】:Hierarchical clustering for centers of kmeans in RR中kmeans中心的层次聚类
【发布时间】:2021-02-04 07:18:17
【问题描述】:

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

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

问题:我在应用相同的方法时总是出错!

#示例

# 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

【问题讨论】:

  • 层次聚类不需要使用第三方库:有内置函数hclust。如果你需要一个特别高效的实现,你可以查看 fastcluster 包。你试过这些吗?
  • @cdalitz 老实说不!我没有尝试使用库fastcluster 的功能。我从其他帖子中了解到,由于距离矩阵,直接对我的数据集 200,00µ0 * 40 使用层次聚类没有用,因此我正在寻找替代方法或其他方法以间接方式应用层次聚类。请问您有什么建议吗?
  • 对于尺寸问题,您已经有了先应用 kmeans 的解决方法。但是,错误消息来自 HCPC 函数。因此,我想知道为什么您将它们用于层次聚类而不使用 hclust(内置或来自 fastcluster)。

标签: r k-means hierarchical-clustering factominer


【解决方案1】:

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

来电
hclust.vector(X, method='single', metric=[...])
相当于
hclust(dist(X, metric=[...]), method='single')
但是使用更少的内存并且同样快

【讨论】:

    猜你喜欢
    • 2012-04-02
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 2013-07-06
    • 2021-10-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多