2017-12-22 42 views
-1

값의 범위가 있으며 kmeans를 사용하여 가장 낮은 값의 클러스터를 식별하고 싶습니다. 그러나 클러스터 레이블은 다른 방법으로 정렬되어있는 것처럼 보입니다.kmeans를 입력 값에 따라 정렬합니다.

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 

원하는대로 kmeans 출력을 정렬 할 수 있습니까?

+0

'CL의 $의 clusters'이'NULL' 나에게주는 assignement을 만들 수 있습니다. 클러스터가 아닌 클러스터입니다. – suchait

+1

'cl $ cluster'에'sort'을 사용할 수 있습니다 – suchait

+0

클러스터 레이블이 서수가 아닙니다 – Cath

답변

0

낮은 숫자가 다른 낮은 숫자와 함께 그룹화 될 것이라는 보장은 없으며 주문한 클러스터의 정확한 방식을 말하지 않습니다. 한 가지 방법이 있습니다. 클러스터의 가장 낮은 지점 인덱스로 클러스터를 정렬 할 수 있습니다. 그러면이 테스트 데이터에 대해 요청한 결과가 생성됩니다.

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

당신이 cl이 변경 사항을 전파하려면 그냥

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