我正在按照图像中的示例计算平均平均精度(MAP)。
按照幻灯片中示例的概念,对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
,这很令人困惑。
请让我知道我在哪里做错了,或者是针对上述两种情况计算平均精度的正确方法是什么。
很高兴在需要时提供更多详细信息。