应用KMeans算法后混淆矩阵的维数不符合预期

时间:2018-03-21 18:16:18

标签: python cluster-analysis k-means confusion-matrix

我正在用Python开发一个代码,将KMeans聚类算法应用于数据集。我初始化的簇的数量是5.但是在应用算法然后预测之后,我很想看到混淆矩阵,以检查算法的执行情况。我的期望是得到一个5×5的混淆矩阵,而我得到一个10×10矩阵,其中最后5列包含0个值。下面是代码和混淆矩阵。我究竟做错了什么?如何根据我初始化的簇数获得5X5矩阵?

`kmeans = KMeans(init = "random", n_clusters = 5, n_init = 5)
kmeans.fit(PCA_30)
predicted_labels = kmeans.predict(PCA_30
print(metrics.confusion_matrix(actual_labels, predicted_labels))`



[[  44  256 3519  280   33    0    0    0    0    0]  
 [   3    9    0   21 4651    0    0    0    0    0]  
 [ 123 2797   63  556  638    0    0    0    0    0]  
 [ 158  143   40 3570  440    0    0    0    0    0]  
 [3391  348    5    0  328    0    0    0    0    0]  
 [ 545  144   76 2036  994    0    0    0    0    0]  
 [  28 3538   76   80  415    0    0    0    0    0]  
 [3787   29   25    7  553    0    0    0    0    0]  
 [ 455  177   34 2283 1114    0    0    0    0    0]  
 [3602   80   38   95  373    0    0    0    0    0]]

1 个答案:

答案 0 :(得分:0)

混淆矩阵用于分类,不适用于群集。

群集将预测0到4.它不能正确预测任何东西,因为群集不是预测性的。 python方法的命名是恕我直言,这是一个坏主意。实际上,许多聚类算法根本不实现predict。 KMeans是一种罕见的例外,因为您可以在中心使用最近邻分类器进行预测。

通常混淆矩阵是正方形的,您使用的代码可能会强制执行此操作 - 在分类中,您希望查看是否从未预测过类!你可能在这里有10门课 - 也许是mnist?