分类任务中常见的评估指标,包括准确率(Accuracy)、精确率(Precision)、召回率(Recall)和值。但是在多分类场景中,我们通常也会采用召回率或者F值来作为评价指标.
1.分类评估指标
(1)二分类评估指标
假定现在有一个二分类的任务,其中0
表示positive,1
表示negative。同时有如下所示的标签值和预测值:
-
True Positive(TP):表示将正样本预测为正样本,即预测正确;
-
False Negative(FN):表示将正样本预测为负样本,即预测错误;
-
False Positive(FP):表示将负样本预测为正样本,即预测错误;
-
True Negative(TN):表示将负样本预测为负样本,即预测正确;
我们知道FP(False Positive)从字面意思来看表示的是错误的正类,也就是说实际上它并不是正类,而是错误的正类,即实际上为负类。因此,FP表示的就是将负样本预测为正样本的含义。再看一个FN,其字面意思为错误的负类,也就是说实际上它表示的是正类。
准确率:所有预测对的数量,除以总的数量。
精确率:计算的是预测对的正样本在整个预测为正样本中的比重,
召回率:计算的是预测对的正样本在整个真实正样本中的比重
对于整体的评估值,常见的做法有两种:第一种是取算术平均;第二种是加权平均。
算术平均就是等权重的对各类别的评估值进行累加求和。
加权平均就是以不同的加权方式来对各类别的评估值进行累加求和。
2.多分类任务
(1)混淆矩阵
加入有如下三分类任务的预测值和真实值:
先横向看再纵向看。例如第一个1
(淡绿色单元格),表示的就是将真实值0预测为0的个数(预测正确);接着右边的1
表示的就是将真实值0预测为1的个数;淡绿色单元格中的1表示的就是将真实值1预测为1的个数;淡绿色单元格中的2表示的就是将真实值2预测为2的个数。也就是说只有这个对角线上的值才表示模型预测正确的样本的数量。
(2)指标计算
代码实现:
借助sklearn中的classification_report
模块来完成所有的计算过程。
from sklearn.metrics import classification_report
y_true = [1, 1, 1, 0, 0, 0, 2, 2, 2, 2]
y_pred = [1, 0, 0, 0, 2, 1, 0, 0, 2, 2]
print(classification_report(y_true, y_pred))
注解:其中macro avg就是算术平均,而weighted avg就是上面介绍的加权平均。