然后我拟合线性模型,plot(n_clust, error)以确定我试图对我的数据执行 k-means 聚类的最佳组合(包含 2000 个案例和 10 个变量的矩阵)。我不知道我应该选择多少个集群。为了解决这个问题,我采用了设置不同 K 值的策略。错误结果和使用的簇数存储在两个向量中。
然后我拟合了线性模型,它给了我最大的 R 平方和。我使用这种策略来选择最佳 K 值。关键是我已经多次执行此过程,并注意到每次运行之间的误差向量不同。这给了我不同的最佳 K 值。使 k-means 结果“稳定”的替代方法是使用set.seed()函数先验kmean()。但是,我担心结果尽管是固定的,但没有一致性。有人可以给我一些“线索”吗?set.seed()会不会只是后一个可变性?是否有另一种选择最佳 K 的策略?
谢谢!
n_clust=NULL
error=NULL
for(i in 1:200){
cl <- kmeans(scores, i, iter.max=100)
erro <- c(error,cl$tot.withinss)
n_clust <- c(n_clust,i)
}
r2=NULL
for(i in 3:197){
a <- lm(error[1:i] ~ n_clust[1:i])
b <- lm(error[i+1:200] ~ n_clust[i+1:200])
rsqd <- as.numeric(summary.lm(a)[8]) + as.numeric(summary.lm(b)[8])
r2 <- c(r2, rsqd)}
id_n <- 3 + which(r2==max(r2))