我正在R Studio中做一些数据的聚类。我对K-means聚类分析和绘制层次聚类的结果有问题。所以当我使用kmeans函数时,我得到了4组10,20,30和6个观察值。然而,当我绘制树状图时,我得到了4组,但有不同数量的观察: 23,26,10和7。
你有没有发现过这样的问题?
下面是我的代码:
mydata<-scale(mydata0)
# K-Means Cluster Analysis
fit <- kmeans(mydata, 4) # 4 cluster solution
# get cluster means
aggregate(mydata,by=list(fit$cluster),FUN=mean)
# append cluster assignment
mydatafinal <- data.frame(mydata, fit$cluster)
fit$size
[1] 10 20 30 6
# Ward Hierarchical Clustering
d <- dist(mydata, method = "euclidean") # distance matrix
fit2 <- hclust(d, method="ward.D2")
plot(fit2,cex=0.4) # display dendogram
groups <- cutree(fit2, k=4) # cut tree into 4 clusters
# draw dendogram with red borders around the 4 clusters
rect.hclust(fit2, k=4, border="red") 发布于 2016-03-15 00:44:14
k-means和层次聚类的结果不需要在每个场景中都相同。
举个例子,每次你运行k-意味着质心的初始选择是不同的,所以结果也不同。
发布于 2016-03-15 00:45:58
这并不令人惊讶。K均值聚类是随机初始化的,可以给出不同的答案。通常,人们倾向于做几次运行,然后聚合结果来检查哪些是“核心”集群。
相比之下,层次聚类是纯粹的确定性,因为不涉及随机性。但与K-means一样,它也是一种启发式方法:遵循一组规则来创建聚类,而不考虑任何底层目标函数(例如,簇内和簇间方差与总体方差)。将现有集群聚合到单个观察值的方式对于确定形成的集群的大小至关重要( "ward.D2“参数是作为hclust命令中的方法传递的)。
有一个适当定义的目标函数来优化应该会给你一个唯一的答案(或其中的一组),但这个问题是NP-hard的,因为涉及的分区的绝对大小(作为观察值数量的函数)。这就是为什么只有启发式方法存在,也是为什么任何聚类过程都不应该被视为给出明确答案的工具,而是一个探索性的工具。
https://stackoverflow.com/questions/35991758
复制相似问题