嘿伙计!今天我们将了解数据科学最重要的概念之一——混淆矩阵及其在 Python 中的实现。
数据科学是一个巨大的领域,我们研究数据、清理数据并使用各种机器学习算法进行预测。在使用任何算法之后,检查算法对期望输出的贡献的准确性和效果对我们来说非常重要。
用于评估模型性能的误差指标之一是混淆矩阵。
什么是混淆矩阵?
有时,我们会遇到需要应用某些机器学习算法来预测classification problem
业务问题的结果的情况,其中结果/目标/响应变量是分类数据。示例:检测电子邮件是垃圾邮件还是非垃圾邮件。
因此,在上述场景中,我们需要一个特殊的误差度量来判断模型的准确性和精确性,以获得最佳拟合。
混淆矩阵是一种误差度量,用于判断分类机器学习算法的性能。它为我们提供了有关模型的准确度水平、精确率和误差百分比的详细信息。
通过使用混淆矩阵,我们可以区分分类响应变量的实际正确结果和预测结果。
因此,在了解了混淆矩阵的需求之后,现在让我们关注各个组件,通过它们我们可以判断和预测任何模型的正确拟合算法。
混淆矩阵的组成部分
看看下面的混淆矩阵结构!
它表示分类模型执行的预测的摘要。
- TRUE NEGATIVE (TN):实际为负且预测为负的值。
- 假负 (FN):实际为正但预测为负的值。
- 假阳性 (FP):实际为负但预测为正的值。
- TRUE POSITIVE (TP):实际为正且预测为正的值。
那么,现在让我们看一下混淆矩阵提供的有关模型的其他信息 –
- 准确性——它的定义是显示根据所提供的输入进行成功预测的百分比的值。
准确度 = 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 |
结论
至此,我们这个话题就结束了。如果您遇到任何问题,请随时在下面发表评论。
至此,祝您学习愉快!