k-означает: одинаковые кластеры для каждого выполнения - PullRequest
5 голосов
/ 21 сентября 2011

Можно ли получить одинаковые кластеры kmeans для каждого выполнения для определенного набора данных.Также как для случайного значения мы можем использовать фиксированное начальное число.Можно ли остановить случайность для кластеризации?

Ответы [ 2 ]

14 голосов
/ 21 сентября 2011

Да. Используйте set.seed, чтобы установить начальное значение для случайного значения перед выполнением кластеризации.

Используя пример в kmeans:

set.seed(1)
x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
           matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
colnames(x) <- c("x", "y")


set.seed(2)
XX <- kmeans(x, 2)

set.seed(2)
YY <- kmeans(x, 2)

Тест на равенство:

identical(XX, YY)
[1] TRUE
4 голосов
/ 21 сентября 2011

Да, вызов set.seed(foo) непосредственно перед запуском kmeans(....) даст один и тот же случайный запуск и, следовательно, одинаковую кластеризацию каждый раз.foo - это начальное число, например 42 или другое числовое значение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...