Scikit-学习混淆矩阵根据字符串表现不同

时间:2019-02-19 22:55:16

标签: python scikit-learn confusion-matrix

我有一个非常奇怪的问题,我在数据集中使用了sklearn混淆矩阵(from sklearn.metrics import confusion_matrix),但是我注意到它要打印的值相差很远。我尝试调试它,它似乎可以与字母的前几个字母一起使用,例如“ a”,“ b”,“ c”,“ d”和数字(0、1、2、3)。

但是,如果我使用网站上示例中的其他字母(“ g”,“ r”,“ m”,“ o”)或

  

https://scikit-learn.org/stable/modules/generated/sklearn.metrics.confusion_matrix.html

我得到的是随机结果。这是一个已知问题吗?我现在唯一想到的解决方案是使用数字正确地打印它,然后在Paint中固定标签。这不是我的论文真正想要的解决方案。

"g", "r", "m" and "o" - wrong

"cat", "ant", "bird", "bear" - wrong

"a", "b", "c", "d" - correct

据我所见,这都应该返回第三个结果。有什么我想念的东西吗?有没有人遇到这个问题?谢谢!

1 个答案:

答案 0 :(得分:2)

您正在向classes传递与plot_confusion_matrix不匹配的confusion_matrix参数,从而导致这些例程使用从类到混淆矩阵行和列的不同映射。 confusion_matrix使用一个映射,而plot_confusion_matrix使用另一个映射,导致结果混乱。

您需要labels的{​​{1}}参数与confusion_matrix的{​​{1}}参数相匹配:

classes