-4

R では、次のように k-means クラスタリングを計算しました。

km = (mat2, centers=3)

ここで、mat2 は一連の時系列の要素を組み合わせて得られる列ベクトルの行列です。31行あります

k-means オブジェクトを取得したので、特定のポイントに関連付けられたデータをどのように確認できますか? たとえば、パーティションの 1 つに属するドットをクリックしたとします。このデータを表示するにはどうすればよいですか? もちろん、私が言いたいのは、このデータをプログラムで取得する方法です。

4

1 に答える 1

3

次のように呼び出すことを期待していますkmeans

set.seed(42)
df <- data.frame( row.names = paste0( "obs", 1:100 ), 
                         V1 = rnorm(100),
                         V2 = rnorm(100),
                         V3 = rnorm(100) )
km <- kmeans( df, centers = 3 )

新しい関数に慣れていない場合は、次を使用して結果のオブジェクトを検査することをお勧めしますstr()

> str(km)
List of 7
 $ cluster     : Named int [1:100] 1 2 3 3 1 1 1 1 1 1 ...
  ..- attr(*, "names")= chr [1:100] "obs1" "obs2" "obs3" "obs4" ...
 $ centers     : num [1:3, 1:3] 0.65604 -1.09689 0.56428 0.11162 0.00549 ...
  ..- attr(*, "dimnames")=List of 2
  .. ..$ : chr [1:3] "1" "2" "3"
  .. ..$ : chr [1:3] "V1" "V2" "V3"
 $ totss       : num 291
 $ withinss    : num [1:3] 43.7 65.7 51.3
 $ tot.withinss: num 161
 $ betweenss   : num 130
 $ size        : int [1:3] 36 34 30
 - attr(*, "class")= chr "kmeans"

あなたの質問から理解したように、あなたは を探してkm$clusterいます。これは、データのどの観測がどのクラスターに割り当てられているかを示します。したがって、クラスターの中心は によって調査できますkm$centers

どの観測値が を中心とする 3 番目のクラスターにクラスター化されたかを知りたい場合は、 (または) をkm$centers[3,]次のようにサブセット化できます。data.framematrix

> rownames(df[ km$cluster == 3, ])
 [1] "obs3"  "obs4"  "obs12" "obs15" "obs16" "obs21" "obs25" "obs27" "obs32" "obs42" "obs43" "obs46" "obs48" "obs54" "obs55" "obs58" "obs61" "obs62" "obs63" "obs66" "obs67" "obs73" "obs76"
[24] "obs77" "obs81" "obs84" "obs86" "obs87" "obs90" "obs94"
于 2013-02-22T10:17:45.680 に答える