【问题标题】:Specifying number of clusters in R在 R 中指定簇的数量
【发布时间】:2017-03-13 08:12:17
【问题描述】:

R 中有没有一种方法可以在不手动指定的情况下确定生成的集群数量?

在从字符串值中提取一些“字母”之后,我将具有 30000 个不同值的变量放入集群中,以便我确定哪些值应该被同等对待。因为有些值应该是相同的,但在空格、标点符号等方面不同。例如,

Emilia Clarke
Emilia Clark e

应该归类为1

我制作了一个 30000 x 30000 矩阵,其中元素是一个单词到另一个单词的距离。

#Get all letters from a string
 > extract_letters <- lapply(str_split(data01,""),function(x) names(table(x)))
#Get the distance of . I produced a 30000x30000 matrix
 > compute_dist  <- adist(extract_letters)
#Cluster
 > hc <- hclust(as.dist(compute_dist))
#Plot via dendogram
 > plot(hc)

下面的代码是我用于处理较小数据的代码,但是,由于大量输入,我无法检查该图,因此在这里已经不适用了。混乱的树状图,所以我无法检测输出了多少个簇

> rect.hclust(hc,k=7)

我不知道要生成的集群数量。我依赖于 hclust 本身的输出,所以我没有办法做 cutree,因为我需要指定参数 k

cutree(hc, k = 7)

【问题讨论】:

  • 我假设您这样做是为了使用某些模型进行推理或预测。然后可以将聚类视为模型的一部分,并且可以基于(交叉)验证优化聚类的数量。
  • @Roland ,我这样做是为了对可能相同的值进行分类。
  • 我明白,但这可能不是最终目标。为什么他们需要分类?您如何检查分类是否有效?
  • @Roland,标准化某个变量的输入
  • 请试着了解我的来历。我可以继续问“你为什么这样做”,直到我们达到你的实际目标,但我现在就停下来。

标签: r cluster-analysis hierarchical-clustering hclust


【解决方案1】:

已经引入了很多索引来确定集群的数量。最常用的方法指标有缺口指标、CH指标、DB指标、轮廓指标。
这些索引中的大多数都试图最大化集群间的变化,同时最小化集群内的变化。

在 r NbClust 包中引入了大约 30 个索引来确定层次和 k-means 聚类方法的簇数。您可以在 NbClust 包https://cran.r-project.org/web/packages/NbClust/NbClust.pdf 上阅读更多信息

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-07
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 2018-08-14
    • 2015-01-14
    • 2021-03-30
    • 2021-01-17
    相关资源
    最近更新 更多