理解 Python 中的混淆矩阵

嘿伙计!今天我们将了解数据科学最重要的概念之一——混淆矩阵及其在 Python 中的实现

数据科学是一个巨大的领域,我们研究数据、清理数据并使用各种机器学习算法进行预测。在使用任何算法之后,检查算法对期望输出的贡献的准确性和效果对我们来说非常重要。

用于评估模型性能的误差指标之一是混淆矩阵。


什么是混淆矩阵?

有时,我们会遇到需要应用某些机器学习算法来预测classification problem业务问题的结果的情况,其中结果/目标/响应变量是分类数据示例:检测电子邮件是垃圾邮件还是非垃圾邮件。

因此,在上述场景中,我们需要一个特殊的误差度量来判断模型的准确性和精确性,以获得最佳拟合。

混淆矩阵是一种误差度量,用于判断分类机器学习算法的性能。它为我们提供了有关模型的准确度水平、精确率和误差百分比的详细信息。

通过使用混淆矩阵,我们可以区分分类响应变量的实际正确结果和预测结果。

因此,在了解了混淆矩阵的需求之后,现在让我们关注各个组件,通过它们我们可以判断和预测任何模型的正确拟合算法。


混淆矩阵的组成部分

看看下面的混淆矩阵结构!

混淆矩阵

它表示分类模型执行的预测的摘要。

  • TRUE NEGATIVE (TN):实际为负且预测为负的值。
  • 假负 (FN):实际为正但预测为负的值。
  • 假阳性 (FP):实际为负但预测为正的值。
  • TRUE POSITIVE (TP):实际为正且预测为正的值。

那么,现在让我们看一下混淆矩阵提供的有关模型的其他信息 –

  1. 准确性——它的定义是显示根据所提供的输入进行成功预测的百分比的值。

准确度 = TP + TN / (TP + TN + FP + FN)

2.精度分数——定义正确预测为 True 并且在实际集合中也恰好为 True 的值集的值。

通过精确度,我们的意思是理解正值确实被预测为正值。

精度 = TP / (TP + FP)

3.召回分数——它是代表一组实际为 True 且也被正确预测为 True 的值的值,

通过回忆,我们的意思是理解特定类别的样本是否被正确预测。

召回率 = TP / (TP +FN)

4.F1成绩

F1分数帮助我们在数据不平衡时评估模型的准确性和效率。它实际上是精确率和召回率分数的调和平均值。

F1 = 2*(召回率 * 精度) / (召回率 + 精度)

现在让我们通过下一节中所示的示例来实现混淆矩阵的概念。


在 Python 中实现混淆矩阵

在此示例中,我们传递了预测值和实际值的列表来构建混淆矩阵。我们需要导入sklearn库才能使用混淆矩阵函数。

from sklearn import metrics
 
pred = ["T", "F", "T", "T", "F"] #predicted set of values
 
actual = ["F", "F", "F", "T", "T"] #actual set of values
CM = metrics.confusion_matrix(pred, actual, labels=["T", "F"]) #confusion matrix
 
print(CM)
report = metrics.classification_report(pred, actual, labels=["T", "F"]) #precision, recall, f1-score,etc
print(report)

代表classification_matrix() function已正确和错误识别的一组值。此外,classification_report() function表示所传递的输入的每个类别的度量值,即“T”和“F”。

输出:

[[1 2]
 [1 1]]
              precision    recall  f1-score   support
 
           T       0.50      0.33      0.40         3
           F       0.33      0.50      0.40         2
 
    accuracy                           0.40         5
   macro avg       0.42      0.42      0.40         5
weighted avg       0.43      0.40      0.40         5

结论

至此,我们这个话题就结束了。如果您遇到任何问题,请随时在下面发表评论。

至此,祝您学习愉快!