让Asumme我具有以下测试值:
y_test2 = [0, 0, 1, 1]
和以下预测值:
y_pred2 = [1, 0, 1, 1]
所以我有一个{0,1}
作为类的二进制分类问题。
如果我使用的是sklearn confusion_matrix
:
confusion_matrix(y_test2, y_pred2)
array([[1, 1], #one 0 was predicted as 0 (TruePositive), one 0 was predicted as 1 (FalseNegative)
[0, 2]], dtype=int64) #two 1 were predicted as 1 (TrueNegatives)
对我来说是
TP: 1
FN: 1
TN: 2
FP: 0
但是,当我用ravel运行confusion_matrix时,scikit会学习文档:
tn, fp, fn, tp = confusion_matrix(y_test2, y_pred2).ravel()
(1, 1, 0, 2)
为什么scikit将1解释为True值?为什么在文档中没有提到它:https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html 使用命名约定进行二进制分类时,我还有其他问题吗?有机会避免这种情况吗?
答案 0 :(得分:2)
查看documentation中的描述:
因此,在二进制分类中,真实否定的计数是C(0,0),错误否定的计数是C(1,0),真实肯定的计数是C(1,1),错误肯定的计数是C(0,1)
从阵列中获取
array([[1, 1],
[0, 2]], dtype=int64)
是
TN: 1
FN: 0
TP: 2
FP: 1