【问题标题】:Generate Classification Report from Confusion Matrix从混淆矩阵生成分类报告
【发布时间】:2021-07-29 20:37:17
【问题描述】:

我通过 Scikit-Learn 的 confusion_matrix(y_true, y_pred) 方法生成了一个混淆矩阵。我需要修改矩阵以删除我通过[arr[:-1] for arr in confusion_matrix][:-1] 所做的最后一列和最后一行。

我现在需要从修改后的矩阵生成分类报告,但不知道如何将修改后的矩阵转换回y_truey_pred。谢谢!

【问题讨论】:

  • 我认为这是不可能的,因为您在删除最后一列和最后一行时会丢失有关最后一个标签的信息以及相关预测。
  • 是的,但是您正在剥离特定类的所有实例,这意味着您应该能够从其余类中获取信息,对吗?

标签: python scikit-learn data-science


【解决方案1】:

例如,我们以二分类为例。

from sklearn.metrics import confusion_matrix
y_true = [0,1,1,0,1,1,1]
y_pred = [0,0,0,1,1,0,1]
a = confusion_matrix(y_true, y_pred)

这将产生输出,

数组([[1, 1], [3, 2]])

现在当你使用这个来修改矩阵时:

[arr[:-1] for arr in a][:-1]

在删除最后一列和最后一行时,您会丢失有关最后一个标签及其相关预测的信息

这将产生这个输出,

[数组([1])]

现在让我们以 3 个类为例,

from sklearn.metrics import confusion_matrix
y_true = [0,1,1,0,1,1,1,2,2,2,2,2,2]
y_pred = [0,0,0,1,1,0,1,2,0,1,2,2,2]
a = confusion_matrix(y_true, y_pred)

输出:

array([[1, 1, 0],
       [3, 2, 0],
       [1, 1, 4]])

现在当你修改矩阵时:

array([[1, 1],
       [3, 2]])

最后一行和最后一列包含2的所有相关预测的详细信息,修改后丢失。

因此,无法将修正后的矩阵转换回 y_true 和 y_pred。

【讨论】:

  • 我知道它不适用于二进制分类。为什么它不适用于多类分类?
  • @ClaytonC。我在答案中添加了解释,请检查。
  • 我知道信息丢失了,但我相信它仍然是可能的。在您的情况下,仍然有 7 个实例可以按行和按列正确加起来。
  • 起初我认为这可能并且我尝试了,但是我怎样才能得到预测为 2 的计数,这是正确的 4 次,仅从修改后的矩阵,它真的不可能,我试过了。
  • 我不确定你的意思……你能详细说明一下吗?
猜你喜欢
  • 2020-08-21
  • 2019-05-26
  • 2019-07-26
  • 2020-04-11
  • 2016-02-05
  • 2022-10-20
  • 2015-08-25
  • 2021-04-15
  • 2020-07-06
相关资源
最近更新 更多