我试图了解如何在 scikit-learn 中计算和实现平均精度 (AP)。我已经阅读了文档,但我认为我还没有完全理解它。
考虑以下两个片段:
import numpy as np
from sklearn.metrics import average_precision_score
y_true = np.array([0, 1, 0])
y_scores = np.array([0.4, 0.4, 0.8])
average_precision_score(y_true, y_scores) # 0.3333333333333333
和
y_true = np.array([[1,0], [0,1],[1,0]])
y_scores = np.array([[0.6,0.4], [0.6,0.4], [0.2,0.8]])
average_precision_score(y_true, y_scores) # 0.45833333333333326
据我了解,这些是相同的数据,但格式不同。第一个只显示正类的真实标签和预测分数,而第二个是提供两个类的信息。
但是为什么他们给出不同的答案呢?特别是这两个结果是如何计算的?哪一个是正确的?我正在阅读这篇文章,但我不明白答案中的精确召回表是如何构建的。任何人都可以为我的示例进行类似的计算吗?