在 R 中,我计算了一个 k 均值聚类如下:
km = (mat2, centers=3)
其中 mat2 是通过组合一组时间序列的元素获得的列向量矩阵。有31行
现在我有了我的 k-means 对象,如何查看与特定点关联的数据?例如,假设我单击了属于其中一个分区的点。如何查看这些数据?当然,我的意思是如何以编程方式获取这些数据。
在 R 中,我计算了一个 k 均值聚类如下:
km = (mat2, centers=3)
其中 mat2 是通过组合一组时间序列的元素获得的列向量矩阵。有31行
现在我有了我的 k-means 对象,如何查看与特定点关联的数据?例如,假设我单击了属于其中一个分区的点。如何查看这些数据?当然,我的意思是如何以编程方式获取这些数据。
我希望你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
。
如果您现在想知道哪些观察已被聚类到以 为中心的第三个聚类km$centers[3,]
,您可以通过以下方式对您的data.frame
(或matrix
)进行子集化
> 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"