R kmeans 到质心的最终距离

R kmeans final distance to to centroid

我使用命令 kmeans_iris <- kmeans(iris[,1:4], centers=3)Riris 数据集上有 运行 一个 kmeans 算法。我现在想知道 iris 数据集中给定观测到其相应集群质心的距离。我可以编写代码来手动计算从观察到与其集群对应的 centers 的欧几里得距离,但是没有一种简单的内置方法可以做到这一点吗?

据我所知,没有一种方法可以提取每个案例的距离。如果我正确理解你想要什么,你可以像这样编写自己的代码:

sqrt(rowSums((iris[,1:4] - fitted(kmeans_iris))^ 2))
# [1] 0.14135063 0.44763825 0.41710910 0.52533799 0.18862662 0.67703767...

...对于欧氏距离。

如果需要,您可以将其整理成一个函数,在其中指定原始 data 和拟合的 k-means 输出。

kmdist <- function(data,km) {
  sqrt(rowSums((data[,colnames(km$centers)] - fitted(km))^ 2))
}
kmdist(iris, kmeans_iris)
# [1] 0.14135063 0.44763825 0.41710910 0.52533799 0.18862662 0.67703767...