sklearn之average_precision_score计算返回NaN

问题描述

使用sklearn计算AP时,当label全是负标签时会返回NaN,例如:

>>> import numpy as np
>>> from sklearn.metrics import average_precision_score
>>> average_precision_score(np.array([0, 0, 0, 0, 0]), np.array([0.1, 0.1, 0.1, 0.1, 0.1]))

xxx/lib/python3.7/site-packages/sklearn/metrics/_ranking.py:864: RuntimeWarning: invalid value encountered in true_divide
  recall = tps / tps[-1]
nan

问题解决

参考average_precision_score does not return correct AP when all negative ground truth labels,这个Bug在scikit-learn==1.1.0之后的版本被修复,因此升级sklearn的版本即可。
具体方法:在Python (>= 3.8)下执行命令,安装新的版本

pip install scikit-learn==1.1.0

效果如下:

>>> import numpy as np
>>> from sklearn.metrics import average_precision_score
>>> average_precision_score(np.array([0, 0, 0, 0, 0]), np.array([0.1, 0.1, 0.1, 0.1, 0.1]))

xxx/lib/python3.8/site-packages/sklearn/metrics/_ranking.py:874: UserWarning: No positive class found in y_true, recall is set to one for all thresholds.
  warnings.warn(
-0.0

参考

1、average_precision_score does not return correct AP when all negative ground truth labels
2、FIX Fix recall in multilabel classification when true labels are all negative
3、scikit-learn 1.1.0

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 你可以使用Python安装from sklearn.metrics import average_precision_score,可以使用以下命令:pip install sklearn.metrics。 ### 回答2: 要安装`sklearn`库中的`average_precision_score`函数,需要先安装`scikit-learn`库。 安装步骤如下: 1. 打开命令行终端。 2. 输入`pip install -U scikit-learn`并按下回车键,等待安装过程完成。 3. 如果已经安装过`scikit-learn`库,可以跳过步骤2。 安装完成后,可以在Python脚本中使用`from sklearn.metrics import average_precision_score`语句来导入`average_precision_score`函数。 ### 回答3: 要安装 `sklearn.metrics` 中的 `average_precision_score` 方法,需要先确保已经安装了 `scikit-learn`(通常称为 `sklearn`)库。可以使用以下命令安装 `scikit-learn` 库: ``` pip install scikit-learn ``` 安装完毕后,您可以通过在 Python 代码中导入 `from sklearn.metrics import average_precision_score` 来使用 `average_precision_score` 方法。请确保您已经在代码中引入了所需的库: ```python from sklearn.metrics import average_precision_score ``` 然后,您就可以在代码中使用 `average_precision_score` 方法来计算平均精确度得分了。例如: ```python y_true = [1, 0, 1, 1, 0] y_scores = [0.2, 0.8, 0.5, 0.9, 0.3] average_precision = average_precision_score(y_true, y_scores) print("平均精确度得分:", average_precision) ``` 这将输出: ``` 平均精确度得分: 0.8333333333333333 ``` 以上是安装和使用 `sklearn.metrics` 中的 `average_precision_score` 的简要说明。通过按照上述步骤进行操作,您将能够在您的项目中使用该方法进行平均精确度评估。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值