sklearn中的混淆矩阵

数据挖掘 scikit-学习 混淆矩阵
2021-10-12 05:22:11

如果你看这个:

>>> y_true = ["cat", "ant", "cat", "cat", "ant", "bird"]
>>> y_pred = ["ant", "ant", "cat", "cat", "ant", "cat"]
>>> confusion_matrix(y_true, y_pred, labels=["ant", "bird", "cat"])
array([[2, 0, 0],
       [0, 0, 1],
       [1, 0, 2]])

我想数组的第一行表示“预测的蚂蚁”,第一列是“实际上是蚂蚁”,第二列是“实际上是鸟”等。

所以第一行第一列 2 我读为“预测的蚂蚁,是蚂蚁”,第一行第二列 0 我读为“预测的蚂蚁是鸟”是 0 适合,第三列是“预测的蚂蚁是猫”是 0 但应该为1。

在理解混淆矩阵时我做错了什么。

另一个例子是这个

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

在哪里甚至不清楚,类的顺序是什么。

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

编辑:除非它被交换。第一行是“是蚂蚁”而不是“预测蚂蚁”。只有在维基百科上系统是该行是预测。

1个回答

你只是混淆了实际和预测。每行代表数组中不同元素的实际值,列代表它们的预测值。那是,

在此处输入图像描述

  • 第一行:有2个ant,2个样本被预测为ant
  • 秒行:有 1只鸟,1 个样本被预测为cat
  • 第三行:有3个cat,1个样本预测为ant,2个样本预测为cat