【发布时间】: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