R kmeans对预定质心的分类

R kmeans对预定质心的分类,r,classification,k-means,R,Classification,K Means,我试图将数据点(通过欧几里德距离)分配给一组已知的预定义中心点,将点分配给最近的固定中心点 我有一种感觉,我可能过于复杂化了/缺少了一些基本的东西,但我已经尝试用一个具有预定中心且没有迭代的kmeans实现来做到这一点。但是,根据下面的代码,可能是因为algo将进行一次迭代,所以无法工作(cl$中心已“移动”,并且不等于原始质心) 是否有另一种简单的方法将矩阵X中的点分配到最近的中心 非常感谢,W x <- rbind(matrix(rnorm(100, sd = 0.3), ncol =

我试图将数据点(通过欧几里德距离)分配给一组已知的预定义中心点,将点分配给最近的固定中心点

我有一种感觉,我可能过于复杂化了/缺少了一些基本的东西,但我已经尝试用一个具有预定中心且没有迭代的kmeans实现来做到这一点。但是,根据下面的代码,可能是因为algo将进行一次迭代,所以无法工作(cl$中心已“移动”,并且不等于原始质心)

是否有另一种简单的方法将矩阵X中的点分配到最近的中心

非常感谢,W

x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2), matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")

vector=c(0.25,0.5,0.75,1)
ccenters <- as.matrix(cbind(vector,vector))
colnames(ccenters) <- c("x", "y")
ccenters

(cl <- kmeans(x, centers=ccenters,iter.max=1))
plot(x, col = cl$cluster)
points(cl$centers, col = 1:4, pch = 8, cex = 2)
cl$centers
cl$centers==ccenters

x您可以直接计算每个点和每个中心之间的距离
看看最近的中心

# All the distances (you could also use a loop)
distances <- outer( 
  1:nrow(x), 
  1:nrow(ccenters), 
  Vectorize( function(i,j) { 
    sum( (x[i,] - ccenters[j,])^2 )
  } )
)

# Find the nearest cluster
clusters <- apply( distances, 1, which.min )

# Plot
plot( x, col=clusters, pch=15 )
segments( ccenters[clusters,1], ccenters[clusters,2], x[,1], x[,2], col=clusters )
#所有距离(也可以使用循环)
距离