怎样理解一个4x4混淆矩阵?

2024-09-30 14:27:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用scikit learns决策树将一组数据分为四类之一。我是新的机器学习和编码一般,并试图理解混淆矩阵。在

所以当我使用sci工具包混淆矩阵时,我得到了一个4乘4的矩阵。我能够计算出这些列是对每个类别的预测(例如“预测的A,预测的B…”)。然而,我不明白这些行代表什么。另外,某些预测是否有可能不在混淆矩阵中。我发现有些列没有必要的总数。为什么会这样?在

unique, counts = np.unique(classif_predict, return_counts=True)
print('Predicted:',dict(zip(unique, counts)))

_unique, _counts = np.unique(classif_test, return_counts=True)
print('Tested:',dict(zip(_unique, _counts)))


pd.DataFrame(
    confusion_matrix(classif_test, class_predict), 
    columns = ['AGN Predicted', 'BeXRB Predicted', 'HMXB Predicted', 'SNR Predicted']
)

我的输出如下:

^{pr2}$
AGN Predicted       BeXRB Predicted     HMXB Predicted      SNR Predicted             
        3                  3                   4                  0
        2                 13                   6                  1
        0                  3                   4                  0
        0                  2                   0                  0
​```

Tags: testtruereturnnp矩阵zippredictdict
1条回答
网友
1楼 · 发布于 2024-09-30 14:27:28

混淆矩阵将帮助您识别模型的分类中哪些是正确的,哪些是不正确的。在

Here is how a confusion matrix works:

Binary Confusion Matrix

在这个矩阵中,我们只有两个可能的类,“NO”和“YES”。列表示预测值,线表示实际(真)值。此矩阵对评估模型的说明是:

  • 正确地将50个样本分类为“否”。(这些被称为真否定

  • 它将错误地将5个样本归类为“否”,而那些应该是“是”的样本。(这些被称为假阴性)

  • 它把10个样本错误地归类为“是”,而那些应该是“否”。(这些被称为假阳性)

  • 正确地将100个样本分类为“是”。(这些被称为真阳性

为了检查每个类上有多少个预测,您必须将列中的值求和:此模型预测55个“否”和110个“是”

要检查每个类上有多少个真正的样本,必须将行中的值求和:这些样本的值分别是60个“否”和105个“是”

两种情况下的总数是165,这是评估的样本总数。在

Specifically for your problem:

当你制作一个4x4混淆矩阵时,逻辑是以同样的方式工作的,每个“额外”类都会添加一个额外的行和列。在您的输出中,总和都是可以的:

Predicted: {'AGN': 7, 'BeXRB': 25, 'HMXB': 7, 'SNR': 2}
Tested: {'AGN': 10, 'BeXRB': 22, 'HMXB': 7, 'SNR': 2}

假设“测试”是您的真实价值:

  • 很明显,你只有10个样本是正确的。在
  • 你也有22个“BeXRB”样本,你的模型将25个归类为“BeXRB”(显然只有13个正确)。在

编辑:

矩阵中的值与预测的输出(dict)中的值不匹配,您可以检查:(我添加了SUM列和行)

^{pr2}$

根据您提供的大量信息,我无法进一步帮助您,但是您应该检查您的classif_predict数组。在

如果您使用的是Jupyter笔记本,由于变量值的变化,以不同的顺序运行单元格可能会引发这种行为。如果是这样的话,试着按预期的顺序重新运行。在

相关问题 更多 >