分类问题的几种常见指标(一)——错误率、精度、准确率、召回率、F1值
前言
分类问题是数学建模和大数据竞赛中几大常见题型之一。评价分类效果的指标有错误率、精度、准确率(precision,也称之查准率)、召回率(recall,也称之查全率)、F1-Score、ROC曲线、AUC和对数损失(logloss)等。这些指标都可以评价一个模型的好坏,其之间也有许多关联,需要针对具体题目场景来选择评价指标。本节主要介绍错误率、精度、准确率、召回率、F1值这几种评价指标。
1 错误率与精度
在分类问题中,错误率是分类结果错误的样本数占样本总数的比例,精度则是分类结果正确的样本数占样本总数的比例。即,错误率 = 1–精度。
2 准确率与召回率
2.1 混淆矩阵
以二分类问题为例,介绍一个重要的定义: 混淆矩阵,如下图所示
假设A类为Positive,正例(阳性);B类为Negative,反例(阴性),则
- Ture Positive(TP):预测对了(T),预测结果为A(阳性-P),原类别为A;
- False Positive(FP):预测错了(F),预测结果为A(阳性-P),原类别为B;
- False Negative(FN):预测错了(F),预测结果为B(阴性-N),原类别为A;
- Ture Negative(TN):预测对了(T),预测结果为B(阴性-N),原类别为B。
总而言之,混淆矩阵的字母代表该次预测的对的还是错的(T/F)和预测结果是正例还是反例(P/N),进而就可以推断原来的类别是什么。(比如FN,预测的是类别B,预测错了,那原来的类别就是A)
; 2.2 准确率(Precision)
准确率(Precision)是指被分类器判定为正类的样本中真正的正类样本所占的比重,即被分类器判为正类的所有样本中有多少是真正的正类样本,其公式定义见以下公式
2.3 召回率(Recall)
召回率是指被分类器正确判定的正类样本占总的正类样本的比重,即所有正类样本中有多少被分类器判为正类样本,定义如以下公式:
; 3 F1值(F1-score)
准确率和召回率反映了分类器性能的两个方面,单依靠其中一个并不能较为全面地评价一个分类器的性能。一般来说,鱼与熊掌不可兼得,你的准确率越高,召回率越低;反之,召回率越高,准确率越低。继而为了平衡准确率和召回率的影响,较为全面地评价一个分类器,便有了 F1-score 这个综合了这两者的指标。
4 代码实现
构建一个计算准确率、召回率和 F1-score 的评价代码也很简单,具体实现代码如下:
- 假设有A类样本10个,B类样本5个,A类样本用1表示,B类样本用0表示。
- 正确预测A类样本7个,正确预测B类样本3个
所以混淆矩阵的具体表示如下:
- 准确率 Precision = TP/(TP+FP) = 7/(7+2) = 0.78
- 召回率 Recall = TP/(TP+FN) =7/(7+3) = 0.7
- F1值 F1 = 2 _Precision_Recall/(Precision+Recall) = 0.74
以下为代码实现:
from sklearn.metrics import precision_score, recall_score, f1_score
y_train = [1,1,1,1,1,1,1,1,1,1,0,0,0,0,0]
y_pred = [1,1,1,1,1,1,1,0,0,0,1,1,0,0,0]
precision = precision_score(y_train, y_pred)
recall = recall_score(y_train, y_pred)
f1 = f1_score(y_train, y_pred)
print('准确率为:', precision)
print('召回率为:', recall)
print('F1值为:', f1)
执行结果如下图所示:
Original: https://blog.csdn.net/qq_44319167/article/details/124511889
Author: 一川风絮千片雪
Title: 【数学建模】分类问题的几种常见指标(一)——准确率、召回率、F1值
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/662779/
转载文章受原作者版权保护。转载请注明原作者出处!