糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 分类模型评价指标

分类模型评价指标

时间:2024-04-06 21:17:05

相关推荐

分类模型评价指标

分类评价

准确率 平均准确率准确率:平均准确率:例子代码混淆矩阵查准率 召回率 f1_score分类报告ROC AUC

准确率 平均准确率

准确率:

对于验证集,模型预测正确的样本数/ 预测的总样本数

accuracy=ncorrectntotalaccuracy = \frac {n_{correct}} {n_{total}}accuracy=ntotal​ncorrect​​

缺点:

在训练集,验证集类别严重不平衡时,准确率无法全面评估模型

平均准确率:

对每个类别,计算准确率,然后所有类别准确率 求均值,作为模型的准确率

如:验证集中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])

如果觉得《分类模型评价指标》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。