È 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
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.
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 per l'esempio –
Grazie mille per questo, un grande aiuto! Si prega di accettare OP. – slotishtype
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. –