【问题标题】:Determine cluster membership in R确定 R 中的集群成员资格
【发布时间】:2016-01-24 09:33:58
【问题描述】:

这是我在 kmeans 之前的向量 -

> sort(table(mydata))
mydata
23  7  9  4 10  3  5  8  2  1 
 1  3  3  4  5  6  6  6  7  9

km <- kmeans(mydata, centers = 10) 

在kmeans之后 -

> sort(table(km$cluster))
km$cluster
 1  6  7  3  5  2  4 10  8  9 
 1  3  3  4  5  6  6  6  7  9 

显然,我所有的 1 都存储在集群 9 中,所有 2 都存储在集群 8 中,依此类推。

我可以使用 R 找到特定数字所属的集群吗?说,找到我的 1 所在的集群?

【问题讨论】:

    标签: r cluster-analysis k-means


    【解决方案1】:

    $cluster 的值以与原始数据相同的顺序返回。

    mydata <- rep(c(23,7,9,4,10,3,5,8,2,1), c(1,3,3,4,5,6,6,6,7,9))
    sort(table(mydata))
    # mydata
    # 23  7  9  4 10  3  5  8  2  1 
    #  1  3  3  4  5  6  6  6  7  9 
    
    km <- kmeans(mydata, centers = 10) 
    unique(cbind(value=mydata, clust=km$cluster))
    #       value clust
    #  [1,]    23     9
    #  [2,]     7     5
    #  [3,]     9     7
    #  [4,]     4     4
    #  [5,]    10     1
    #  [6,]     3    10
    #  [7,]     5     2
    #  [8,]     8     8
    #  [9,]     2     6
    # [10,]     1     3
    

    在这里,我刚刚使用 cbind 重新加入了两者,并使用 unique 消除了所有的重复数据,因为您拥有如此离散的数据。

    【讨论】:

      【解决方案2】:

      扩展 MrFlick 的答案(赞成),如果您希望以编程方式获取集群编号,您也可以这样做(利用 magrittr 包,以摆脱所有这些嵌套括号):

      library(magrittr)
      data.point <- 5  # put the data point here
      cluster.no <- c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique
      

      例子:

      library(magrittr)
      set.seed(42)  # for reproducibility
      mydata <- rep(c(23,7,9,4,10,3,5,8,2,1), c(1,3,3,4,5,6,6,6,7,9))
      km <- kmeans(mydata, centers = 10) 
      
      data.point <- 23
      c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique
      # 8
      data.point <- 10
      c(mydata==data.point)  %>% which %>% km$cluster[.] %>% unique
      # 1
      

      【讨论】:

        猜你喜欢
        • 2018-02-13
        • 1970-01-01
        • 1970-01-01
        • 2014-08-15
        • 2013-10-08
        • 2020-08-19
        • 2017-06-24
        • 2013-01-20
        • 1970-01-01
        相关资源
        最近更新 更多