【发布时间】:2020-03-09 09:10:11
【问题描述】:
我在 Keras 中使用 CNN 训练了一个手写数字多类分类模型。我正在尝试使用相同的训练图像评估模型,以估计算法的准确性;但是,当我评估 CNN 混淆矩阵时,它只给出了以下形式的一列:
[[4132 0 0 0 0 0 0 0 0 0]
[4684 0 0 0 0 0 0 0 0 0]
[4177 0 0 0 0 0 0 0 0 0]
[4351 0 0 0 0 0 0 0 0 0]
[4072 0 0 0 0 0 0 0 0 0]
[3795 0 0 0 0 0 0 0 0 0]
[4137 0 0 0 0 0 0 0 0 0]
[4401 0 0 0 0 0 0 0 0 0]
[4063 0 0 0 0 0 0 0 0 0]
[4188 0 0 0 0 0 0 0 0 0]]
我猜算法给出了正确的结果,因为这些是数据库中每个数字的总数;然而,混淆矩阵应该是这样的:
[[4132 0 0 0 0 0 0 0 0 0]
[ 0 4684 0 0 0 0 0 0 0 0]
[ 0 0 4177 0 0 0 0 0 0 0]
[ 0 0 0 4351 0 0 0 0 0 0]
[ 0 0 0 0 4072 0 0 0 0 0]
[ 0 0 0 0 0 3795 0 0 0 0]
[ 0 0 0 0 0 0 4137 0 0 0]
[ 0 0 0 0 0 0 0 4401 0 0]
[ 0 0 0 0 0 0 0 0 4063 0]
[ 0 0 0 0 0 0 0 0 0 4188]]
The data can be taken from the "train.csv" file in this Kaggle project.
我想问你们我在代码中做错了什么,所以我得到了这个奇怪的结果。
【问题讨论】:
-
不看代码;是什么让你觉得算法给出了正确的结果?如果您的网络将所有内容都误分类为 0 类,那么您得到的混淆矩阵是完全有效的。
-
是的,但是 100% 分类良好的问题的混淆矩阵应该是对角的。如果你检查代码,准确率是 9.84 % 这真的很糟糕,这就是为什么我想知道代码是否写得好,以便得到正确的对角矩阵和正确的准确度估计。
-
@user115376 如果某个答案解决了您的问题,请点击答案分数下方的灰色勾号将其标记为已接受
标签: python deep-learning nlp conv-neural-network confusion-matrix