如何通过PR曲线在Scikit-learn中评估模型的精确率和召回率?

2026-04-30 12:531阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计697个文字,预计阅读时间需要3分钟。

如何通过PR曲线在Scikit-learn中评估模型的精确率和召回率?

这是最常见的起步卡片点:

解决方法不是换函数,而是加average参数:

  • average='macro':对每个类单独算精确率/召回率,再无权重平均(推荐初筛)
  • average='micro':全局统计TP/FP/FN,适合类别不均衡时更稳
  • average=None:返回每个类的原始值,方便查哪一类拖后腿

别漏掉zero_division参数——某类没预测出来时,默认会报UndefinedMetricWarning,设成zero_division=0可静默填0。

画PR曲线必须用precision_recall_curve,不能用classification_report

classification_report只给阈值为0.5时的单点指标,而PR曲线本质是“换一堆阈值,看精确率和召回率怎么 trade-off”。真要画图,得靠precision_recall_curve——它只收概率输出(y_score),不接受硬分类结果(y_pred)。

立即学习“Python免费学习笔记(深入)”;

典型错误是把model.predict(X)传进去,结果得到全0或全1的y_score,画出来就是两条直线。

阅读全文
标签:Python

本文共计697个文字,预计阅读时间需要3分钟。

如何通过PR曲线在Scikit-learn中评估模型的精确率和召回率?

这是最常见的起步卡片点:

解决方法不是换函数,而是加average参数:

  • average='macro':对每个类单独算精确率/召回率,再无权重平均(推荐初筛)
  • average='micro':全局统计TP/FP/FN,适合类别不均衡时更稳
  • average=None:返回每个类的原始值,方便查哪一类拖后腿

别漏掉zero_division参数——某类没预测出来时,默认会报UndefinedMetricWarning,设成zero_division=0可静默填0。

画PR曲线必须用precision_recall_curve,不能用classification_report

classification_report只给阈值为0.5时的单点指标,而PR曲线本质是“换一堆阈值,看精确率和召回率怎么 trade-off”。真要画图,得靠precision_recall_curve——它只收概率输出(y_score),不接受硬分类结果(y_pred)。

立即学习“Python免费学习笔记(深入)”;

典型错误是把model.predict(X)传进去,结果得到全0或全1的y_score,画出来就是两条直线。

阅读全文
标签:Python