2016-11-11 9 views
0

Rで単純なkmeansを使用して1つのベクトルをクラスター化しています。クラスタ番号はむしろ任意に割り当てられるので(クラスタの中心を使用して)、順番に取得する必要があります。あなたはクラスタ中心から見ることができるようにkmansによって生成されたクラスターの数をクラスターの中心に合わせて変更します

> 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 

、Cluterセンターによって(昇順)順序でクラスタの順序は次のとおりです:1,3,2ここ

はexmapleです。

例えば:

は、私はそれに応じて変換識別クラスタのベクトルを返すようにしたいです(cl $ cluster)は私に3 2 3 2 1を与えるべきです。

私はファクタレベルを順序付けすることで挑戦しようとしましたが、論理的な終わりには到達できませんでした。

> 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 

答えて

0

クラスタベクトルを中心ベクトルの順序でインデックスできます。それは同様にオプションだとして、あなたの例では、他の

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 

誰かが、as.factor溶液でチャイムすることができます。

関連する問題