R 如何为每次迭代可视化k-均值质心?

R 如何为每次迭代可视化k-均值质心?,r,k-means,R,K Means,我想通过绘制从初始聚类的起始值(在(3,5)、(6,2)、(8,3))到聚类中心的算法迭代,以图形方式演示k-means的行为。 每个迭代可能对应于具有质心和簇的单个绘图 鉴于: x<-c(3,6,8,1,2,2,6,6,7,7,8,8) y<-c(5,2,3,5,4,6,1,8,3,6,1,7) df<-data.frame(x,y) dfClu

我想通过绘制从初始聚类的起始值(在(3,5)、(6,2)、(8,3))到聚类中心的算法迭代,以图形方式演示k-means的行为。 每个迭代可能对应于具有质心和簇的单个绘图

鉴于:

                x<-c(3,6,8,1,2,2,6,6,7,7,8,8)
                y<-c(5,2,3,5,4,6,1,8,3,6,1,7)


                df<-data.frame(x,y)
                dfCluster<-kmeans(df,centers=3) # with 3 centroids

x尝试使用
tryCatch
在达到转换时自动停止过程: 我使用iris数据集,因为kmeans需要2次迭代(6,3.5)-点切换)

set.seed(1337)
df=虹膜[,1:2]

dfCluster尝试使用
tryCatch
在达到转换时自动停止过程: 我使用iris数据集,因为kmeans需要2次迭代(6,3.5)-点切换)

set.seed(1337)
df=虹膜[,1:2]

dfCluster尝试使用
tryCatch
在达到转换时自动停止过程: 我使用iris数据集,因为kmeans需要2次迭代(6,3.5)-点切换)

set.seed(1337)
df=虹膜[,1:2]

dfCluster尝试使用
tryCatch
在达到转换时自动停止过程: 我使用iris数据集,因为kmeans需要2次迭代(6,3.5)-点切换)

set.seed(1337)
df=虹膜[,1:2]


DFCLUSTER这个怎么样:?谢谢你的建议。但是,我在定义初始示例中解释的起始值时遇到了困难。鉴于以上数据,我想。1这个怎么样:?谢谢你的建议。但是,我在定义初始示例中解释的起始值时遇到了困难。鉴于以上数据,我想。1这个怎么样:?谢谢你的建议。但是,我在定义初始示例中解释的起始值时遇到了困难。鉴于以上数据,我想。1这个怎么样:?谢谢你的建议。但是,我在定义初始示例中解释的起始值时遇到了困难。根据以上数据,我得出结论。1这很好,非常感谢你的功能。我如何在(3,5)、(6,2)、(8,3)处输入起始质心?使用iris复制和粘贴代码只会生成第二个iter图形只需保存一个起始矩阵
start yes这就是它。谢谢但是,省略了初始图形迭代iter1。只显示了最后一个,即iter 2。用iris从上面复制你的例子,我也有iter 2。使用RStudio在绘图中单击,或使用
par(mfrow=c(2,1))
在一幅图像中绘图,或使用
png
保存绘图,请参见
?png
这是如何工作的问题更多的是迭代,而不是绘图。如果我有需要更多迭代才能找到质心的数据,我该如何扩展和你的代码。因为将随机数据集放入代码中会返回两次迭代…thx Againt非常好,非常感谢您提供的函数。我如何在(3,5)、(6,2)、(8,3)处输入起始质心?使用iris复制和粘贴代码只会生成第二个iter图形只需保存一个起始矩阵
start yes这就是它。谢谢但是,省略了初始图形迭代iter1。只显示了最后一个,即iter 2。用iris从上面复制你的例子,我也有iter 2。使用RStudio在绘图中单击,或使用
par(mfrow=c(2,1))
在一幅图像中绘图,或使用
png
保存绘图,请参见
?png
这是如何工作的问题更多的是迭代,而不是绘图。如果我有需要更多迭代才能找到质心的数据,我该如何扩展和你的代码。因为将随机数据集放入代码中会返回两次迭代…thx Againt非常好,非常感谢您提供的函数。我如何在(3,5)、(6,2)、(8,3)处输入起始质心?使用iris复制和粘贴代码只会生成第二个iter图形只需保存一个起始矩阵
start yes这就是它。谢谢但是,省略了初始图形迭代iter1。只显示了最后一个,即iter 2。用iris从上面复制你的例子,我也有iter 2。使用RStudio在绘图中单击,或使用
par(mfrow=c(2,1))
在一幅图像中绘图,或使用
png
保存绘图,请参见
?png
这是如何工作的问题更多的是迭代,而不是绘图。如果我有需要更多迭代才能找到质心的数据,我该如何扩展和你的代码。因为将随机数据集放入代码中会返回两次迭代…thx Againt非常好,非常感谢您提供的函数。我如何在(3,5)、(6,2)、(8,3)处输入起始质心?使用iris复制和粘贴代码只会生成第二个iter图形只需保存一个起始矩阵
start yes这就是它。谢谢但是,省略了初始图形迭代iter1。只显示了最后一个,即iter 2。用iris从上面复制你的例子,我也有iter 2。使用RStudio在绘图中单击,或使用
par(mfrow=c(2,1))
在一幅图像中绘图,或使用
png
保存绘图,请参见
?png
这是如何工作的问题更多的是迭代,而不是绘图。如果我有需要更多迭代才能找到质心的数据,我该如何扩展和你的代码。因为将随机数据集放入代码中会返回两次迭代…再次是thx
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
}