k means - Change the number of cluster produced by kmeans in R according to cluster center -


i using simple kmeans in r cluster single vector. since cluster numbers rather arbitrarily assigned (i presume), need them in order (using cluster center).

here exmaple:

> vals <- c(0.22, 0.17, 0.21, 0.13, 0.00) > set.seed(32833) > cl <- kmeans(vals ,3)  > cl$cluster [1] 2 3 2 3 1  > cl$centers    [,1] 1 0.000 2 0.215 3 0.150 

as can see cluster centers, order of clusters in (ascending) order cluter center : 1,3,2.

i want return vector of identified clusters transformed accordingly:

e.g. transform(cl$cluster) should give me 3 2 3 2 1.

i have tried chaning factor levels ordering not able logical end.

> cl$cluster <- as.factor(as.character(cl$cluster)) > levels(cl$cluster) <- order(-cl$centers) > cl$cluster [1] 3 1 3 1 2 levels: 2 3 1 

you index cluster vector order of center vector. in example,

vals <- c(0.22, 0.17, 0.21, 0.13, 0.00) set.seed(32833) cl <- kmeans(vals ,3)  cl$cluster [1] 2 3 2 3 1  cl$centers    [,1] 1 0.000 2 0.215 3 0.150  order(cl$centers)[cl$cluster] [1] 3 2 3 2 1 

someone else can chime in as.factor solution, that's option well.


Comments

Popular posts from this blog

sql server - Cannot query correctly (MSSQL - PHP - JSON) -

php - trouble displaying mysqli database results in correct order -

C++ Linked List -