2013-05-06 2 views
3

В среде программирования R в настоящее время я использую стандартную реализацию алгоритма kmeans (тип: help(kmeans)). Похоже, что я не могу инициализировать стартовые центроиды. Я указываю алгоритм kmeans, чтобы дать мне 4 кластера, и я хотел бы передать векторные координаты стартовых центроидов.Инициализация R kmeans

  1. Есть ли реализация kmeans, позволяющая мне передавать начальные координаты центра тяжести?
+5

Аргумент 'центры' должен позволить вам это сделать. – Marius

ответ

5

Да. Приведенная вами реализация позволяет указать начальные позиции. Вы передаете их через параметр 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"