当我在下面的代码中使用时,我看到在总平方中的总数增加。这甚至可能,或者我在代码中犯了一些错误?平方和中的Kmeans总数是否随群集数量增加而增加?
v<-foreach(i = 1:30,.combine = c) %dopar% {
iter <- kmeans (clustering_data,centers = i,iter.max = 1000)
iter$tot.withinss
}
当我在下面的代码中使用时,我看到在总平方中的总数增加。这甚至可能,或者我在代码中犯了一些错误?平方和中的Kmeans总数是否随群集数量增加而增加?
v<-foreach(i = 1:30,.combine = c) %dopar% {
iter <- kmeans (clustering_data,centers = i,iter.max = 1000)
iter$tot.withinss
}
K均值是一个随机算法。它不保证找到最佳。
所以你只是有一个不好的随机。
是的。见Anony-Mousse的回答。
如果您使用kmeans()
函数的nstart = 25
参数,那么您将运行该算法25次,让R从每次运行收集错误度量并在内部构建平均值。这样你就不需要构造一个foreach循环。
从的文档开发的kmeans()
## random starts do help here with too many clusters
## (and are often recommended anyway!):
(cl <- kmeans(x, 5, nstart = 25))
您必须选择n开始一个合理的值。然后,由不同的随机初始化产生的错误更有可能被平均化。 (但是不能保证在nstart运行后tot.withinss是最小的。)