【问题标题】:cluster labels and cluster centers (kmeans in R)聚类标签和聚类中心(R 中的 kmeans)
【发布时间】:2012-04-02 13:42:13
【问题描述】:

我对 R 非常陌生,并试图处理一个 kmeans 对象。理想情况下,我想做的是获取数据中每个点的集群标签列表,并用相应的中心替换标签。本质上,最终得到一个矩阵,其中每个数据点由 kmeans 放入的集群中心的值表示。

有没有办法有效地做到这一点,而不是手动检查每个条目并用集群中心值替换集群标签?

谢谢!

【问题讨论】:

    标签: r k-means


    【解决方案1】:

    这就是你所追求的吗?扩展自this answer

        # make some data
        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")
        #
        # do cluster analysis
        (cl <- kmeans(x, 2))
        #
        # put cluster labels with data
        out1 <- data.frame(cbind(x, clusterNum = cl$cluster))
        #
        # organise center coords to be ready for merging
        centers <- data.frame(cbind(data.frame(cl$center[,1]), 
                                    data.frame(cl$center[,2]), 
                                    clusterNum=rownames(cl$center)))
        #
        # merge cluster center coords with data        
        out2 <- merge(out1, centers, all.x = TRUE) 
        #
        # check output
        out2
        clusterNum            x           y   cl.center...1. cl.center...2.
    1            1  0.233161364 -0.04258146     0.01064895     0.01376516
    2            1 -0.356284774 -0.59135602     0.01064895     0.01376516
    3            1 -0.302272796 -0.24033113     0.01064895     0.01376516
    4            1 -0.369299302 -0.24997660     0.01064895     0.01376516
    5            1 -0.060454427  0.19711328     0.01064895     0.01376516
    ...
    90           2  0.609833599  0.67729922     1.05184887     1.03445718
    91           2  0.943306637  1.09420588     1.05184887     1.03445718
    92           2  0.545053826  1.22620571     1.05184887     1.03445718
    93           2  0.706921965  1.10326091     1.05184887     1.03445718
    94           2  0.837644227  1.07121784     1.05184887     1.03445718
    95           2  0.550863085  1.06977250     1.05184887     1.03445718
    #
    # Success! We have one dataframe that includes: raw data, cluster labels
    # and cluster center coords
    

    我使用merge 将集群中心坐标与原始数据放在一起,但毫无疑问还有更有效的方法(例如,不需要重新组织cl$center)。

    【讨论】:

    • 嗯,这很有帮助——我还想知道如何用集群中心替换集群中心标签。例如,我有一个数组,它是集群中心... ob
    • 为什么不问另一个问题,这次包括您刚刚在此处的评论中透露的新细节,以及一个可重现的示例,按照此处的说明进行操作:stackoverflow.com/questions/5963269/…
    猜你喜欢
    • 2021-10-09
    • 2021-02-04
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2017-04-10
    • 2016-02-02
    • 2020-12-03
    • 2018-08-17
    相关资源
    最近更新 更多