You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

sklearn中average_precision_score报除法无效值错误原因咨询

问题原因与解决办法

1. 报错的核心原因

average_precision_score是用来计算二分类任务中正样本平均精度的指标,它的第一个参数y_true必须包含至少一个正类标签(即值为1的样本)。

你提供的y_true全是0,没有任何正样本:

y_true=np.array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])

此时计算召回率时,分母是总正样本数(也就是0),代码里的tps[-1]就是总正样本数,除以0自然会触发invalid value encountered in true_divide警告——这个指标在没有正样本的场景下无法正常计算。

2. 交换参数后有结果的本质

当你交换参数顺序,把y_scores作为第一个参数(真实标签)、y_true作为第二个参数(预测得分)时:

average_precision_score(y_scores,y_true)

此时y_scores里有两个1(正样本),函数能正常执行计算,但这是完全错误的参数用法——你把预测得分当成了真实标签,把真实标签当成了预测得分,得到的0.1666...没有任何业务或模型评估的实际意义,只是函数在参数合法的情况下返回了一个数值而已。

3. 正确的处理方式

  • 如果你的任务是二分类,先检查数据是否有误:真实标签里应该存在正样本(1),否则这个指标不适用。
  • 如果场景中确实没有正样本(比如异常检测里无异常的验证集),可以选择跳过这个指标的计算,或者手动返回0(因为没有正样本时,平均精度没有定义)。

内容的提问来源于stack exchange,提问作者Coder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 15:36:08