分类评价
准确率 平均准确率准确率:平均准确率:例子代码混淆矩阵查准率 召回率 f1_score分类报告ROC AUC准确率 平均准确率
准确率:
对于验证集,模型预测正确的样本数/ 预测的总样本数
accuracy=ncorrectntotalaccuracy = \frac {n_{correct}} {n_{total}}accuracy=ntotalncorrect
缺点:
在训练集,验证集类别严重不平衡时,准确率无法全面评估模型
平均准确率:
对每个类别,计算准确率,然后所有类别准确率 求均值,作为模型的准确率
如:验证集中0类有95个样本,1类有5分样本,模型预测的时候将全部样本预测为0,此时准确率0.95,但是对1类全部预测错了,虽然准确率高,但是模型不好;而平均准确率为0.5,可以说明模型不好。
所以平均准确率,更能全面的评估模型
例子
y_test = [ 0,1,0,2,1,0]
y_pred = [0,2,0,1,2,0]
准确率:accuracy=36=0.5accuracy = \frac {3} {6} =0.5accuracy=63=0.5
平均准确率:
acc0=1acc_0 = 1acc0=1
acc1=0acc_1 = 0acc1=0
acc2=0acc_2 = 0acc2=0
meanacc=acc0+acc1+acc23=0.333mean_{acc} = \frac {acc_0+acc_1+acc_2} {3} =0.333meanacc=3acc0+acc1+acc2=0.333
代码
#手动实现计算准确率n_correct = (y_pred == y_test).sum()n_total = y_test.shape[0]acc = n_correct / n_total#sklearn 实现from sklearn.metrics import accuracy_scorefrom sklearn.metrics import balanced_accuracy_scoreacc = accuracy_score(y_test,y_pred)mean_acc = balanced_accuracy_score(y_test,y_pred)
混淆矩阵
更详细的描述模型预测结果
2分类 --> 2x2矩阵
n分类 --> nxn矩阵
如下:2分类的混淆矩阵
真负率:TNTN+FP=88+1\frac {TN} {TN+FP} = \frac {8} {8+1}TN+FPTN=8+18
假正率:FPTN+FP=18+1\frac {FP} {TN+FP} = \frac {1} {8+1}TN+FPFP=8+11
假负率:FNFN+TP=22+10\frac {FN} {FN+TP} = \frac {2} {2+10}FN+TPFN=2+102
真正率:TPFN+TP=102+10\frac {TP} {FN+TP} =\frac {10} {2+10}FN+TPTP=2+1010
#sklearn APIfrom sklearn.metrics import confusion_matrixcm = confusion_matrix(y_test,y_pred)
查准率 召回率 f1_score
查准率,召回率是一对矛盾的指标,一般同时使用
f1_score,是对两者的融合
查准率precision_score:从预测的角度出发,预测正确的样本数 / 预测为某一类的总数,二分类中只计算正类,
多分类中计算预测的每一类的查准率,求均值作为模型的查准率
召回率recall_score:从真实的角度出发,预测正确的样本数 / 某一类真实样本数,二分类只计算正类
多分类计算每一类的召回率,求均值作为模型的召回率
f1_score=2∗precision∗recallprecision+recallf1\_score = \frac {2 * precision * recall} {precision+recall}f1_score=precision+recall2∗precision∗recall
#sklearn 中的APIfrom sklearn.metrics import precision_scorefrom sklearn.metrics import recall_scorefrom sklearn.metrics import f1_score#0,1 二分类p = precision_score(y_test,y_pred)#0,1,2多分类p = precision_score(y_test,y_pred,average="macro")#average计算平均值的方式#macro 简单平均#weighted 加权平均 预测的每一类的查准率*每一类真实样本的占比#召回率计算方式同查准率
分类报告
from sklearn.metrics import classification_reportr = classification_report(y_test,y_pred)
如下:
ROC AUC
以FPR为横坐标,以TPR为纵坐标 的折线图
折线下的面积即为 AUC,类别不均衡时仍可以有效的评估模型,用于二分类
#sklearn APIfrom sklearn.metrics import roc_curvefrom sklearn.metrics import roc_auc_scorefpr,tpr,threshold = roc_curve(y_test,y_pred_proba[:,1],pos_label=1)auc = roc_auc_score(y_test,y_pred_proba[:,1])
如果觉得《分类模型评价指标》对你有帮助,请点赞、收藏,并留下你的观点哦!