混淆矩阵sklearn错误?

时间:2019-05-30 08:21:25

标签: python python-3.x scikit-learn confusion-matrix

我正在用sklearn.metrics.confusion_matrix进行测试,以查看如果预测数组中有一个不在标签和映射数组中的类,该怎么办。 我的代码是:

from sklearn.metrics import confusion_matrix as cm

a = ["positive\n", "positive\n", "negative\n", "positive\n", "negative\n"]
b = ["negative\n", "negative\n", "don't\n", "negative\n", "negative\n"]
m = ["positive\n", "negative\n"]
c = cm(a, b, m)
TN, FP, FN, TP = c.ravel()

print(c)
print("")
print("{} {} {} {}\n".format(TN, FP, FN, TP))

输出是:

[[0 3]
 [0 1]]

0 3 0 1

因此,类don't被跳过了。


但是,如果您查看版本v0.21.2的{​​{3}},这是我安装了ravel()方法的版本,则“应该”输出我写的混淆矩阵的值:TN ,FP,FN,TP。我的print的输出是不同的。 ravel()的实际输出似乎被翻转:TP,FN,FP,TN。我的想法对吗?

1 个答案:

答案 0 :(得分:1)

没有错误。您已定义标签:

m = ["positive\n", "negative\n"]

因此,"positive\n"为负,"negative\n"为正。结果符合您的要求。

如果您以这种方式修改m

m = ["negative\n", "positive\n"]

您将得到:

1 0 3 0

分别用于TN, FP, FN, TP

相关问题