如何通过PR曲线在Scikit-learn中评估模型的精确率和召回率?
- 内容介绍
- 文章标签
- 相关推荐
本文共计697个文字,预计阅读时间需要3分钟。
这是最常见的起步卡片点:
解决方法不是换函数,而是加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,画出来就是两条直线。
本文共计697个文字,预计阅读时间需要3分钟。
这是最常见的起步卡片点:
解决方法不是换函数,而是加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,画出来就是两条直线。

