如何在python中计算异常情况的平均平均精度

时间:2019-11-23 11:33:47

标签: python machine-learning scikit-learn precision mean

我正在按照图像中的示例计算平均平均精度(MAP)。

enter image description here

按照幻灯片中示例的概念,对4个项目进行排序,我们希望所有4个项目都是正确的:[1, 1, 0, 0]的平均精度为;

(1 + 0.5) / 2 = 0.75

考虑一个比上面差得多的系统,它只能得到1个正确的项:[1, 0, 0, 0]的平均精度为;

1/1 = 1

我觉得计算平均精度的概念是错误的。可能是我理解的方式是错误的。

在本教程中,他们给出了计算平均精度的不同定义:https://medium.com/@pds.bangalore/mean-average-precision-abd77d0b9a7e

Formula for calculating AP@k is: sum k=1:x of (precision at k * change in recall at k)

我还尝试了sklearn的平均精度,如下所示。

import numpy as np
from sklearn.metrics import average_precision_score
y_true = np.array([1, 1, 1, 1])
y_scores = np.array([1, 0, 0, 0])
average_precision_score(y_true, y_scores)

输出似乎也为1,这很令人困惑。

请让我知道我在哪里做错了,或者是针对上述两种情况计算平均精度的正确方法是什么。

很高兴在需要时提供更多详细信息。

0 个答案:

没有答案