这个混淆矩阵正确吗?
Is this confusion matrix correct?
我正在尝试 class 化动物的叫声。为此,我正在使用 CNN。我正在将 classes 相互比较,因此,一些训练将使用 2 classes 完成。一旦我通过这些训练获得了混淆矩阵,我就会遇到这样的事情:
可以看出,模型似乎正确地预测了一切。另一方面,当我将阈值从 0.5 提高到 0.8 时,我发现有一些错误class化。这其实是我所期望的,但我很困惑,当我得到准确率、精确率、召回率和 f1 分数时,我看到一个小于 1 的值,而且都是一样的,如图所示。但是,我希望它们都为 1,因为没有 misclassification。我错了吗?你能解释一下吗?提前致谢。
请注意,我的数据有 2 个 class,每个数据有 1200 条记录。我用 CNN 模型训练了他们。 20%的数据用作测试,其余数据用于训练。
代码如下:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix as cm
predictions = model.predict(X_test)
y_pred = (predictions > 0.5)
print(predictions.shape, y_pred.shape)
predictions = np.argmax(predictions, axis=1)
y_pred = np.argmax(y_pred, axis=-1)
cm(y_pred, y_test)
问题是您计算了 预测 和 本身 之间的混淆矩阵,而不是预测和 y_test
。
应该是
cm(y_pred, y_test)
我正在尝试 class 化动物的叫声。为此,我正在使用 CNN。我正在将 classes 相互比较,因此,一些训练将使用 2 classes 完成。一旦我通过这些训练获得了混淆矩阵,我就会遇到这样的事情:
可以看出,模型似乎正确地预测了一切。另一方面,当我将阈值从 0.5 提高到 0.8 时,我发现有一些错误class化。这其实是我所期望的,但我很困惑,当我得到准确率、精确率、召回率和 f1 分数时,我看到一个小于 1 的值,而且都是一样的,如图所示。但是,我希望它们都为 1,因为没有 misclassification。我错了吗?你能解释一下吗?提前致谢。
请注意,我的数据有 2 个 class,每个数据有 1200 条记录。我用 CNN 模型训练了他们。 20%的数据用作测试,其余数据用于训练。
代码如下:
from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.metrics import confusion_matrix as cm
predictions = model.predict(X_test)
y_pred = (predictions > 0.5)
print(predictions.shape, y_pred.shape)
predictions = np.argmax(predictions, axis=1)
y_pred = np.argmax(y_pred, axis=-1)
cm(y_pred, y_test)
问题是您计算了 预测 和 本身 之间的混淆矩阵,而不是预测和 y_test
。
应该是
cm(y_pred, y_test)