我使用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
```
混淆矩阵将帮助您识别模型的分类中哪些是正确的,哪些是不正确的。在
在这个矩阵中,我们只有两个可能的类,“NO”和“YES”。列表示预测值,线表示实际(真)值。此矩阵对评估模型的说明是:
它正确地将50个样本分类为“否”。(这些被称为真否定)
它将错误地将5个样本归类为“否”,而那些应该是“是”的样本。(这些被称为假阴性)
它把10个样本错误地归类为“是”,而那些应该是“否”。(这些被称为假阳性)
它正确地将100个样本分类为“是”。(这些被称为真阳性)
为了检查每个类上有多少个预测,您必须将列中的值求和:此模型预测55个“否”和110个“是”
要检查每个类上有多少个真正的样本,必须将行中的值求和:这些样本的值分别是60个“否”和105个“是”
两种情况下的总数是165,这是评估的样本总数。在
当你制作一个4x4混淆矩阵时,逻辑是以同样的方式工作的,每个“额外”类都会添加一个额外的行和列。在您的输出中,总和都是可以的:
假设“测试”是您的真实价值:
编辑:
矩阵中的值与预测的输出(dict)中的值不匹配,您可以检查:(我添加了SUM列和行)
^{pr2}$根据您提供的大量信息,我无法进一步帮助您,但是您应该检查您的
classif_predict
数组。在如果您使用的是Jupyter笔记本,由于变量值的变化,以不同的顺序运行单元格可能会引发这种行为。如果是这样的话,试着按预期的顺序重新运行。在
相关问题 更多 >
编程相关推荐