【问题标题】:Calculate dunn index for Kernel Kmeans in r计算 r 中内核 Kmeans 的邓恩指数
【发布时间】:2014-10-21 07:51:05
【问题描述】:

我使用以下方法对我的数据运行 kmeans:

spherical_Data <- kmeans(myData,4)

现在计算我使用的邓恩指数:

spherical_Data <- kmeans(myData,4)
Dist <- dist(myData,method="euclidean")
dunn(Dist, spherical_Data$cluster)

这里 Dunn 函数的第二个参数是一个向量,其中包含 myData 中所有点的集群成员资格。

现在我按如下方式运行内核化 kmeans:

kernel_Kmeans <- kkmeans(myData, centers=4, kernel = "rbfdot", kpar = "automatic")

kernel_Kmeans 给我以下输出:

Spectral Clustering object of class "specc" 

 Cluster memberships: 

3 1 3 3 3 2 3 3 2 3 2 2 3 2 1 4 3 1 2 1 3 3 4 2 2 1 1 2 3 3 2 1 4 1 2 3 3 2 3 4 2 2 3 1 1 3 2 2 3 3 1 3 3 1 1 2 1 4 4 3 3 3 3 4 3 3 3 3 3 2 1 3 1 2 3 2 4 3 1 2 3 2 4 2 3 2 1 3 3 4 2 3 2 3 1 2 3 4 2 3 2 4 1 2 1 1 2 1 2 1 1 3 3 3 3 2 3 3 1 1 1 2 1 4 1 1 3 3 2 4 3 3 1 3 1 2 1 2 1 2 3 1 1 1 3 3 4 2 1 3 1 1 3 3 3 3 3 2 2 

Gaussian Radial Basis kernel function. 
 Hyperparameter : sigma =  7.63469658003494 

Centers:  
            [,1]       [,2]
[1,]  0.03108416 -0.2142212
[2,] -0.63034038 -0.6909727
[3,]  0.69360916  0.3623118
[4,] -0.95418284  0.1941879

Cluster size:  
[1] 287 209 389 115

Within-cluster sum of squares:  
[1] 286.34824  27.35574 188.54685 158.99104

要计算 Dunn 指数,我需要第一个输出,即包含所有点的集群成员资格的向量(在集群成员资格下标记)。

dunn(Dist, kernel_Kmeans$cluster) does not work. 

谁能告诉我这是怎么做到的。

【问题讨论】:

    标签: r


    【解决方案1】:

    这是一种从kkmeans 返回的对象中提取集群信息的方法。

    一个例子:

    library(kernlab)
    data(iris)
    sc <- kkmeans(as.matrix(iris[,-5]), centers=3)
    

    输出(sc):

    Spectral Clustering object of class "specc" 
    
     Cluster memberships: 
    
    1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 3 2 3 2 3 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2 2 2 2 3 3 3 3 2 3 2 2 3 3 3 3 2 3 3 3 3 3 3 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 
    
    Gaussian Radial Basis kernel function. 
     Hyperparameter : sigma =  0.957009094923757 
    
    Centers:  
             [,1]     [,2]     [,3]     [,4]
    [1,] 5.006000 3.428000 1.462000 0.246000
    [2,] 6.554286 2.974286 5.300000 1.865714
    [3,] 5.580000 2.633333 3.986667 1.233333
    
    Cluster size:  
    [1] 50 70 30
    
    Within-cluster sum of squares:  
    [1] 1313.240 2004.637  625.704
    

    您可以使用@.Data提取信息:

    sc@.Data
    #   [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
    #  [39] 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 3 2 3 2 3 2 3 3 3 3 2 3 2 3 3 2 3 2 3 2 2 2 2
    #  [77] 2 2 2 3 3 3 3 2 3 2 2 3 3 3 3 2 3 3 3 3 3 3 3 3 2 2 2 2 2 2 3 2 2 2 2 2 2 2
    # [115] 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
    

    【讨论】:

    • 感谢它成功了!!!由于我是 R 的初学者,你能告诉我还有哪些其他地方适用于 @.Data。 R似乎有很多这样的隐藏变量。有没有指向这些变量的资源(教程)?
    • @Sudatta 如果你想找出一个对象的结构,你可以使用函数str。在此示例中:str(sc).
    猜你喜欢
    • 2020-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-26
    • 1970-01-01
    • 2016-02-10
    • 1970-01-01
    相关资源
    最近更新 更多