2011-09-21 15 views
5

È possibile ottenere gli stessi cluster kmea per ogni esecuzione per un determinato set di dati. Proprio come per un valore casuale, possiamo usare un seme fisso. È possibile fermare la casualità per il clustering?k-means: Stessi cluster per ogni esecuzione

risposta

4

Sì, chiamare set.seed(foo) immediatamente prima di eseguire kmeans(....) darà lo stesso avvio casuale e quindi lo stesso clustering ogni volta. foo è un seme, ad esempio 42 o qualche altro valore numerico.

+0

basta aggiungere alla risposta Andrie e Gavin, ho provato che anche quando abbiamo impostato l'argomento 'nstart' in i kmea() più grandi di 1, cioè con più iterazioni di seeding casuale, set.seed() otterrà risultati identici producibili. –

13

Sì. Utilizzare set.seed per impostare un seme per il valore casuale prima di eseguire il clustering.

Usando l'esempio in 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) 

di prova per l'uguaglianza:

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

+1 per l'esempio –

+0

Grazie mille per questo, un grande aiuto! Si prega di accettare OP. – slotishtype

Problemi correlati