我正在用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。我的想法对吗?
答案 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
。