使用SimpleKMeans confusinig输出进行weka聚类

时间:2014-03-01 06:44:30

标签: machine-learning data-mining weka k-means

我尝试在weka中运行并理解 SimpleKMeans 算法的结果。

这是我的训练数据

@relation weather_clustered

@attribute Instance_number numeric
@attribute outlook {sunny,overcast,rainy}
@attribute temperature numeric
@attribute humidity numeric
@attribute windy {TRUE,FALSE}
@attribute play {yes,no}
@attribute cluster {cluster0,cluster1,cluster2,cluster3,cluster4,cluster5}

@data
0,sunny,85,85,FALSE,no,cluster3
1,sunny,80,90,TRUE,no,cluster5
2,overcast,83,86,FALSE,yes,cluster2
4,rainy,68,80,FALSE,yes,cluster4

然后我使用 numClusters = 2 seed = 10 运行 SimpleKMeans 。我确实希望看到有关属性群集的群集结果,换句话说,我想查看哪个群集属性 clusterx 与之相关。如您所见,我不认为属性群集是正确的群集。

为了看到输出中的对应关系,我设置了 集群评估的类=(Nom)集群

并获得以下结果

类属性:cluster 集群的类:

0 1  <-- assigned to cluster
 0 0 | cluster0
 0 0 | cluster1
 1 0 | cluster2
 0 1 | cluster3
 1 0 | cluster4
 0 1 | cluster5

Cluster 0 <-- cluster2
Cluster 1 <-- cluster3

Incorrectly clustered instances :   2.0  50      %

我喜欢列表中的通信,这正是我需要的,但是我不明白以下是什么意思

Cluster 0 <-- cluster2
Cluster 1 <-- cluster3

另外,我对以下结果感到困惑

Incorrectly clustered instances :   2.0  50      %

如果它来自,weka如何知道正确的结果,我没有正确的结果,也许它会将属性集群与正确的集群混淆。总之,我不明白输出。

1 个答案:

答案 0 :(得分:1)

SimpleKMeans是一种聚类算法,可以将数据分组为K个群集。

在您的情况下,numClusters=2 =&gt; K=2会导致您的数据分组为2个群集。

  

群集1

     

群集2

当您选择要进行群集评估的类时,Weka会执行以下操作:

  1. 删除您为评估选择的属性值。在您的情况下,群集类数据。

  2. 在不使用群集属性中的任何信息的情况下应用KMeans算法。

  3. 使用初始数据集(使用群集属性)评估群集

  4. 所以,在你的情况下,

      

    cluster1,cluster2 ..,cluster5,

    充当您的实例的标签,并将用于测试您的模型。

    为了更好地理解输出,你有

    @data
    0,sunny,85,85,FALSE,no,cluster3
    1,sunny,80,90,TRUE,no,cluster5
    2,overcast,83,86,FALSE,yes,cluster2
    4,rainy,68,80,FALSE,yes,cluster4
    

    Cluster 0 <-- cluster2
    Cluster 1 <-- cluster3
    
    
    Incorrectly clustered instances :   2.0  50      %
    

    如您所见,有2个错误的群集实例:

    1,sunny,80,90,TRUE,no,cluster5
    4,rainy,68,80,FALSE,yes,cluster4
    

    有50%错误的群集实例,因为你总共有4个实例,其中2个被错误地聚类(2 = 50%的4个)