如何理解4x4混淆矩阵?

时间:2019-10-27 00:51:19

标签: python scikit-learn confusion-matrix

我正在使用scikit学习决策树将一组数据分类为四个类别之一。我是机器学习和编码的新手,并且正在尝试了解混淆矩阵。

因此,当我使用sci-kits混淆矩阵时,会得到一个四乘四的矩阵。我能够确定这些列是针对每个类别做出的预测(例如“ Predicted A,Predicted 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']
)

我的输出看起来像这样:

Predicted: {'AGN': 7, 'BeXRB': 25, 'HMXB': 7, 'SNR': 2}
Tested: {'AGN': 10, 'BeXRB': 22, 'HMXB': 7, 'SNR': 2}
AGN Predicted       BeXRB Predicted     HMXB Predicted      SNR Predicted             
        3                  3                   4                  0
        2                 13                   6                  1
        0                  3                   4                  0
        0                  2                   0                  0
​```

2 个答案:

答案 0 :(得分:0)

混淆矩阵将帮助您确定模型分类的正确与否。仅需两节课就可以思考它。

  

以下是混淆矩阵的工作原理:

Binary Confusion Matrix

在此矩阵中,我们只有两个可能的类:“否”和“是”。列表示预测值,而线表示实际(真)值。这个矩阵关于评估模型的意思是:

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

  • 分类错误 5个样本为“否”,而这些样本本应为“是”。 (这些被称为假阴性

  • 分类错误的10个样本为“是”,而应为“否”。 (这些称为误报

  • 正确将100个样本分类为“是”。 (这些被称为 True Positives )。

要检查每个类上有多少个预测,您必须对各列中的值求和:该模型预测了55个“否”和110个“是”。

要检查每个类上有多少个真实样本,您必须对行中的值求和:样本真实为60个“否”和105个“是”。

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

  

专门针对您的问题:

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

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

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

  • 这意味着您有10个“ AGN”样本,但是您的模型仅对7个样本进行了分类(显然只有3个分类正确)。
  • 您还有22个“ BeXRB”样本,您的模型将25个分类为“ BeXRB”(显然只有13个)。

编辑:

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

             Pred AGN      Pred BeXRB          Pred HMXB        Pred SNR        SUM
AGN True        3                 3               4                 0            10
BeXRB True      2                13               6                 1            22
HMXB True       0                 3               4                 0            7
SNR True        0                 2               0                 0            2

SUM:            5                21              14                 1

根据您提供的信息量,我将无法为您提供更多帮助,但是您应该检查classif_predict数组。

如果您使用的是Jupyter Notebook,由于变量值的更改,以不同顺序运行的单元可能会引发这种行为。如果是这种情况,请尝试按预期的顺序再次运行。

答案 1 :(得分:0)

行代表已预测的类的实例(通过我们使用的算法),列代表已知真实值的实例。

行:预测值 列:实际值

在您的情况下,了解 4*4 矩阵表示您的预测变量中有 4 个不同的值,即:AGN、BeXRB、HMXB、SNR。 还有一件事,值的正确分类将位于从左上角到右下角的对角线上,而所有其他值都被错误分类。

this is an example of a 4*4 matrix 请注意,绿色值将被正确分类,红色值将被错误分类。