3

在R编程环境中,我目前使用的是kmeans算法的标准实现(类型:)help(kmeans)。看来我无法初始化起始质心。我指定kmeans算法给我 4 个簇,我想传递起始质心的矢量坐标。

  1. 是否有kmeans允许我传递初始质心坐标的实现?
4

1 回答 1

6

是的。您提到的实现允许您指定起始位置。你通过centers参数传入它们

> dat <- data.frame(x = rnorm(99, mean = c(-5, 0 , 5)), y = rnorm(99, mean = c(-5, 0, 5)))
> plot(dat)
> start <- matrix(c(-5, 0, 5, -5, 0, 5), 3, 2)
> kmeans(dat, start)
K-means clustering with 3 clusters of sizes 33, 33, 33

Cluster means:
           x           y
1 -5.0222798 -5.06545689
2 -0.1297747 -0.02890204
3  4.8006581  5.00315151

Clustering vector:
 [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2
[51] 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3

Within cluster sum of squares by cluster:
[1] 58.05137 73.81878 52.45732
 (between_SS / total_SS =  94.7 %)

Available components:

[1] "cluster"      "centers"      "totss"        "withinss"     "tot.withinss" "betweenss"   
[7] "size"  
于 2013-05-06T02:25:43.440 回答