2017-12-22 6 views
-1

Ich habe eine Reihe von Werten und ich möchte den Cluster mit den niedrigsten Werten mit Kmeans identifizieren. Allerdings scheinen die Cluster-Labels anders sortiert zu sein, als ich gesucht habe.Sortieren kmeans Cluster-Labels nach den Eingabewerten

test <- c(1,4,5,12,17,18,33,34) 
cl <- kmeans(test, centers = 3, nstart =10) 
cl$cluster 
[1] 2 2 2 1 1 1 3 3 
# whereas I would have expected to get 
[1] 1 1 1 2 2 2 3 3 

Wie kann ich die Ausgabe von Kmeans auf die Weise sortieren, die ich will?

+0

'cl $ clusters' mir gibt's NULL'. Es ist Cluster nicht Cluster. – suchait

+1

Sie können 'sort' auf' cl $ cluster' verwenden – suchait

+0

Cluster-Labels sind nicht ordinal – Cath

Antwort

0

Es gibt keine Garantie, dass niedrige Zahlen mit anderen niedrigen Zahlen gruppiert werden und Sie nicht genau sagen, wie Sie die Cluster geordnet haben möchten. Hier ist ein Weg; Sie können die Cluster nach dem niedrigsten Punktindex im Cluster sortieren. Das wird zu dem Ergebnis führen, das Sie zu diesen Testdaten angefordert haben.

MT = aggregate(test, list(cl$cluster), min) 
MT$Group.1[order(MT$x)[cl$cluster]] 
[1] 1 1 1 2 2 2 3 3 

Wenn Sie diese Änderung zu cl propagieren wollen, können Sie einfach die assignement machen

cl$cluster = MT$Group.1[order(MT$x)[cl$cluster]]