【发布时间】:2019-02-02 14:47:22
【问题描述】:
我在Rentrop 的答案中找到了此代码,以回答不同的 k 均值绘图问题,但我想知道为什么这只在任何给定数据集上绘制两次迭代。有没有办法将它概括为在收敛时停止绘图,而不是在两次迭代后停止?
set.seed(1337)
df = iris[,1:2]
dfCluster<-kmeans(df,centers=3, iter.max = 1)
plot(df[,1], df[,2], col=dfCluster$cluster,pch=19,cex=2, main="iter 1")
points(dfCluster$centers,col=1:5,pch=3,cex=3,lwd=3)
max_iter = 10
for (i in 2:max_iter){
tryCatch({
dfCluster <- kmeans(df,centers = dfCluster$centers, iter.max = 1)
done <- TRUE
},
warning=function(w) {done <- FALSE})
plot(df[,1], df[,2], col=dfCluster$cluster,pch=19,cex=2, main=paste("iter",i))
points(dfCluster$centers,col=1:5,pch=3,cex=3,lwd=3)
if(done) break
}
【问题讨论】:
-
不。如果您对相同的数据使用 kmeans.ani,则需要 8 次迭代。更改数据需要相同的迭代次数。