【问题标题】:Get cluster mean in k-means clustering analysis with R使用 R 在 k 均值聚类分析中获取聚类均值
【发布时间】:2017-02-15 10:37:46
【问题描述】:

我使用 k-means 算法创建了两个集群。每个集群包含 4 个变量。如果我想获得每个集群中每个变量的均值,我应该这样做:

clusteredsubset$centers

colMeans(y[clusteredsubset$cluster == 1,])
colMeans(y[clusteredsubset$cluster == 2,])

其中y 是数据矩阵(4 列),clusteredsubsetkmeans 的结果。

【问题讨论】:

    标签: r cluster-analysis k-means


    【解决方案1】:

    我会使用:

    means = sapply(split(clusteredsubset, clusteredsubset$cluster),function(x)
         {return(sapply(x,function(x){return(mean(x))}))})
    

    【讨论】:

      【解决方案2】:

      任何一个都可以,因为它们给出了相同的结果。但是既然kmeans返回centers,为什么不用呢?

      以下基于?kmeans的第一个例子:

      set.seed(0)
      x <- rbind(matrix(rnorm(100, sd = 0.3), ncol = 2),
                 matrix(rnorm(100, mean = 1, sd = 0.3), ncol = 2))
      colnames(x) <- c("x", "y")
      cl <- kmeans(x, 2)
      
      ## what `kmeans` returns
      cl$centers
      #              x            y
      #1 -0.0008158201 -0.008394296
      #2  0.9261878482  1.029984748
      
      ## manual computation
      colMeans(x[cl$cluster == 1, ])
      #            x             y 
      #-0.0008158201 -0.0083942957 
      
      colMeans(x[cl$cluster == 2, ])
      #        x         y 
      #0.9261878 1.0299847 
      

      结果一模一样(位数不同只是打印效果)。

      ## make a plot
      plot(x, col = cl$cluster)
      points(cl$centers, col = 1:2, pch = 8, cex = 2)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-09
        • 2014-07-24
        • 2019-12-05
        • 2011-08-04
        • 2015-08-03
        • 2015-02-09
        • 2017-12-30
        • 2012-06-18
        相关资源
        最近更新 更多