-1

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)
4

1 回答 1

0

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

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

于 2016-11-15T14:12:56.660 回答