【问题标题】:Scikit-learn confusion matrix performing differently based on stringsScikit-learn 混淆矩阵根据字符串表现不同
【发布时间】:2019-02-20 07:08:21
【问题描述】:

我有一个非常奇怪的问题,我正在为我的数据集使用 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 中修复标签。这不是我真正想要的论文解决方案。 ????

据我所知,这应该都返回第三个结果。有什么我遗漏的或者有没有人遇到过这个问题?谢谢!

【问题讨论】:

    标签: python scikit-learn confusion-matrix


    【解决方案1】:

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

    你需要一个 labels 参数到 confusion_matrix 匹配 classes 参数到 plot_confusion_matrix

    confusion_matrix(gr, rr, labels=mr)
    

    【讨论】:

    • 这个问题其实挺有意思的,这个问题和混淆矩阵默认处理label的方式有关。它按字典顺序对它们进行排序,因此结果有所不同。同样的行为发生在 sklearn 的其他部分,例如 LabelEncoder。现在您对 sklearn 有了更多了解 :)
    猜你喜欢
    • 2016-05-12
    • 2018-05-22
    • 2014-06-11
    • 2020-05-30
    • 2020-07-16
    • 2018-01-15
    • 2013-08-25
    • 2017-03-03
    • 1970-01-01
    相关资源
    最近更新 更多