2017-08-03 1 views

Répondre

0

K-means est un algorithme randomisé. Cela ne garantit pas de trouver l'optimum.

Donc, vous avez simplement eu un mauvais hasard.

0

Oui. Voir la réponse d'Anony-Mousse.

Si vous utilisiez l'argument nstart = 25 de la fonction kmeans(), vous exécuteriez l'algorithme 25 fois, laissez R collecter les mesures d'erreur de chaque exécution et générer des moyennes en interne. De cette façon, vous n'avez pas besoin de construire une boucle foreach.

de la documentation de R kmeans()

## random starts do help here with too many clusters 
## (and are often recommended anyway!): 
(cl <- kmeans(x, 5, nstart = 25)) 

Vous devez choisir une valeur raisonnable pour nstart. Ensuite, les erreurs par différentes initialisations aléatoires sont plus susceptibles d'être moyennées. (Mais il n'y a aucune garantie que tot.withinss soit minime après nstart runs.)