scikit中混淆矩阵的正确命名

时间:2019-07-10 08:02:49

标签: python scikit-learn confusion-matrix

让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 使用命名约定进行二进制分类时,我还有其他问题吗?有机会避免这种情况吗?

1 个答案:

答案 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