r中的k-均值聚类分析:只设置一个中心,其他中心有待计算

r中的k-均值聚类分析:只设置一个中心,其他中心有待计算,r,center,k-means,R,Center,K Means,我想用k-means将数据点分为三组。我知道这三组中的一组的中心,但不知道其他两组的中心。因此,我想预先设置一个组的中心,并相应地对算法进行聚类,使该中心保持不变。然而,我不确定是否以及如何使用R中的k-means包实现这一点 如果我在没有预先设置中心的情况下进行聚类,那么我所知道的组的中心就会转移到其他聚类中心的方向,这可能导致错误分类 谢谢你的意见 朱利安当然,我们可以制定自己的初始化例程。例如,我们可以这样修改Forgy方法 # modified Forgy set.seed(1) c1

我想用k-means将数据点分为三组。我知道这三组中的一组的中心,但不知道其他两组的中心。因此,我想预先设置一个组的中心,并相应地对算法进行聚类,使该中心保持不变。然而,我不确定是否以及如何使用R中的k-means包实现这一点

如果我在没有预先设置中心的情况下进行聚类,那么我所知道的组的中心就会转移到其他聚类中心的方向,这可能导致错误分类

谢谢你的意见


朱利安

当然,我们可以制定自己的初始化例程。例如,我们可以这样修改Forgy方法

# modified Forgy
set.seed(1)

c1 <- c(7.8, 4.3, 6.8, 2.4)
cn <- rbind(c1, iris[sample(nrow(iris), 2),-5])

kmeans(iris[,-5], cn)$centers
#   Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1     6.684427    2.626896     6.512092  2.09042298
# 2     5.078494    3.646351     1.485264  0.05223007
# 3     6.012102    2.553765     3.869828  1.66717281

可能重复的,你可以添加一个非常感谢这个解决方案。我可以将其应用于我的数据,从其中一个组的0/0中心开始。
# modified Forgy with nstart
set.seed(1)
data(iris)
m <- iris[,-5]

# initializing with the actual centroid of the first species
c1 <- colMeans(m[as.integer(iris[,5]) == 1,])
c1
# Sepal.Length  Sepal.Width Petal.Length  Petal.Width 
#        5.006        3.428        1.462        0.246 

kf <- function(x, clust, nc) {
    cn <- rbind(clust, x[sample(nrow(x), nc-1),])
    kmeans(x, cn)
}

l <- replicate(100, kf(m, c1, 3), simplify=FALSE)
bss <- sapply(l, '[[', "betweenss")
table(signif(bss, 4))
# 
# 538.6 602.5 
#    37    63 
kmo <- l[[which.max(bss)]]

kmo$centers
#   Sepal.Length Sepal.Width Petal.Length Petal.Width
# 1     5.006000    3.428000     1.462000    0.246000
# 2     5.901613    2.748387     4.393548    1.433871
# 3     6.850000    3.073684     5.742105    2.071053