2016-02-16 2 views
1

J'ai un problème d'utilisation de kmeans dans un système ubuntu. Je semble obtenir des résultats différents! Mes données est dit:différents résultats en utilisant R dans windows et linux

x<- c(0.1295..,-0.58928,-0.244252,-0.41614,-0.58804,-0.74628,-0.9045188,-1.050903,-1.197288,-1.3353877,-1.47348656,-1.607894) 

quand je joue fonction kmeans et que vous souhaitez seulement obtenir la valeur maximale de kmeans centres $ dans un système de fenêtres,

means <- max(kmeans(x, 3)$centers) 
means 
[1] -0.05892 

Quand je lance le code exact dans ubuntu système 12.04, je reçois une réponse complètement différente

means <- max(kmeans(x,3)$centers) 
means 
[1] -0.1482334 

Alors, je fis les kmeans à nouveau sans la fonction max

means <- kmeans(x, 3) 
means$centers 
NULL 

Mais, signifie lui-même a toutes les entrées

means 


Available components: 
[1] "cluster" "centers" "tots" "withinss" "tot.withinss" 
[6] "betweenss" "size" "iter" "ifault" 

Il semble y avoir quelque chose de changer entre la fonctionnalité dans Windows et Linux. Quelqu'un peut-il m'aider à comprendre cela ?!

+1

kmeans commence par hasard centroïdes, avez-vous essayé d'ajouter 'set.seed (123)' au début des deux scripts? –

+0

Merci Sébastien, qui a fait l'affaire. Je pense que c'est l'avantage d'utiliser RStudio! J'exécutais le code dans Rstudio dans Windows et je suppose que cela s'est fait automatiquement et que je devais set.seed (123) manuellement dans ubuntu. –

Répondre

2

Un algorithme de moyennes k n'est généralement pas déterministe, c'est-à-dire qu'il ne conduit généralement pas à des résultats parfaitement reproductibles. La raison principale est que dans les algorithmes communs, le initialization is random.

Comme indiqué dans? Kmeans

essayer plusieurs départs aléatoires (nstart> 1) est souvent recommandé

+1

Merci RHertel, Cela a fonctionné aussi bien et comme suggéré par @ sebastian-c, set.seed (123) a fonctionné aussi bien. Maintenant, je dois essayer d'exécuter cela en utilisant rollapply et voir si je reçois les résultats comme je l'ai eu avec RStudio dans Windows. –

+0

Je suis content que votre question ait été répondue et que je puisse y contribuer. Je voudrais juste ajouter que vous pouvez obtenir le même résultat sur différentes machines en utilisant 'set.seed()', mais cela ne veut pas dire que ce même résultat est meilleur que ce que vous avez obtenu avec une autre graine pseudo-aléatoire, ou sans spécifier aucune graine. – RHertel

+0

Je comprends ce que vous voulez dire ici. J'essaye de reproduire les résultats que j'ai obtenus sur la première machine depuis qu'ils sont testés et je réécris un code sur Linux pour pouvoir publier et fonctionner sur un serveur. Mais je vais sûrement garder cela à l'esprit. Merci encore! –