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