2011-09-21 9 views
5

Es posible obtener los mismos clústeres kmeans para cada ejecución para un conjunto de datos en particular. Al igual que para un valor aleatorio, podemos usar una semilla fija. ¿Es posible detener la aleatoriedad para la agrupación?k-means: los mismos clústeres para cada ejecución

Respuesta

4

Sí, al llamar al set.seed(foo) inmediatamente antes de ejecutar kmeans(....) dará el mismo inicio aleatorio y, por lo tanto, el mismo agrupamiento cada vez. foo es una semilla, como 42 o algún otro valor numérico.

+0

sólo tiene que añadir a la respuesta Andrie y de Gavin, he probado que incluso cuando nos fijamos el argumento 'nstart' en el kmeans() mayor que 1, es decir, que tiene múltiples iteraciones de siembra aleatoria, set.seed() obtendrá resultados idénticos producibles. –

13

Sí. Use set.seed para establecer una semilla para el valor aleatorio antes de realizar la agrupación.

Usando el ejemplo de 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) 

prueba de la igualdad:

identical(XX, YY) 
[1] TRUE 
+1

+1 para el ejemplo –

+0

¡Gracias a un millón por esto, gran ayuda! Por favor acepta OP. – slotishtype

Cuestiones relacionadas