我正在用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]]
答案 0 :(得分:0)
混淆矩阵用于分类,不适用于群集。
群集将预测0到4.它不能正确预测任何东西,因为群集不是预测性的。 python方法的命名是恕我直言,这是一个坏主意。实际上,许多聚类算法根本不实现predict
。 KMeans是一种罕见的例外,因为您可以在中心使用最近邻分类器进行预测。
通常混淆矩阵是正方形的,您使用的代码可能会强制执行此操作 - 在分类中,您希望查看是否从未预测过类!你可能在这里有10门课 - 也许是mnist?