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
Post a Comment