2013-02-22 110 views
-4

在R,I已经计算的k均值聚类,如下所示:- [R k均值聚类数据

km = (mat2, centers=3) 

其中MAT2是通过组合一组时间序列的的元件获得的列向量的矩阵。有31行

既然我有我的k-means对象,我该如何看待与特定点相关的数据?例如,假设我点击属于其中一个分区的点。我如何查看这些数据?当然我的意思是如何以编程方式获取这些数据。

+2

您需要添加更多的细节;不可能遵循你正在做的事情。 – csgillespie 2013-02-22 08:40:27

回答

2

我希望你叫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"