R kmeans 到质心的最终距离
R kmeans final distance to to centroid
我使用命令 kmeans_iris <- kmeans(iris[,1:4], centers=3)
在 R
的 iris
数据集上有 运行 一个 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
-m
eans 输出。
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...
我使用命令 kmeans_iris <- kmeans(iris[,1:4], centers=3)
在 R
的 iris
数据集上有 运行 一个 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
-m
eans 输出。
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...