繁体   English   中英

混淆矩阵sklearn错误?

[英]Confusion matrix sklearn bug?

我正在使用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文档 ,那是我安装的ravel()方法的文档 ,“应该”输出我所写的混淆矩阵的值:TN,FP,FN,TP。 我的print输出是不同的。 似乎ravel()的实际输出被翻转了:TP,FN,FP,TN。 我的想法对吗?

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

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

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

如果以这种方式修改m

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

你会得到:

1 0 3 0

分别用于TN, FP, FN, TP

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM