模型评估需结合业务场景选择指标:准确率适用于类别均衡时;精准率与召回率需权衡,F1兼顾二者;AUC衡量整体判别力且对不平衡鲁棒;混淆矩阵和分类报告可定位具体弱点。

模型训练完不等于结束,关键要看它在真实场景中表现如何。评估不是走流程,而是判断模型是否真的可靠、稳定、可落地。
准确率(Accuracy)——最常用但容易误导
准确率 = 正确预测样本数 / 总样本数。看起来直观,但在类别严重不平衡时会失效。比如一个癌症检测模型,99%的样本是健康人,模型全预测“健康”,准确率高达99%,但漏掉了所有病人。
- 适用场景:正负样本比例接近(如1:1或2:1)时可作为初步参考
- 慎用场景:二分类中正样本占比低于10%或高于90%时,别只看准确率
- 代码快速查看:from sklearn.metrics import accuracy_score; print(accuracy_score(y_true, y_pred))
精准率、召回率与F1值——面向业务目标的选择
精准率(Precision)关注“我预测为正的,到底有多准”;召回率(Recall)关注“所有真实的正例,我抓到了多少”。两者常此消彼长,需根据任务权衡。
- 垃圾邮件识别:宁可误判(低精准率),也不能漏判(高召回率优先)
- 银行风控审批:宁可拒掉好客户(低召回率),也不能放行坏客户(高精准率优先)
- F1是两者的调和平均,适合需要兼顾的场景;f1_score(y_true, y_pred, average='binary') 可直接计算
ROC曲线与AUC——衡量模型整体判别能力
ROC曲线画的是不同阈值下“真正率 vs 假正率”,AUC(Area Under Curve)越接近1,说明模型区分正负样本的能力越强。它不依赖单一阈值,对类别不平衡更鲁棒。
立即学习“Python免费学习笔记(深入)”;
- AUC = 0.5:模型等同于随机猜测
- AUC > 0.8:通常认为模型有较好判别力
- 代码生成ROC:from sklearn.metrics import roc_curve, auc; fpr, tpr, _ = roc_curve(y_true, y_score); plt.plot(fpr, tpr)
混淆矩阵与分类报告——一眼看清模型弱点
混淆矩阵展示每个类别的预测分布,是分析错误模式的基础。sklearn的classification_report能一键输出精准率、召回率、F1、支持数(support)。
- 重点关注support小但F1低的类别——可能是数据少、特征难学,或标签噪声大
- 若某类召回率极低,说明模型几乎“看不见”它,需检查采样、特征表达或损失函数设计
- 打印方式:from sklearn.metrics import classification_report; print(classification_report(y_true, y_pred))










