【发布时间】:2021-03-13 23:32:34
【问题描述】:
我正在从事一个涉及使用 NDCG(归一化分布式累积增益)的项目,并且我了解该方法的基础计算。
所以我从sklearn.metrics 导入了ndcg_score,然后将一个ground truth 数组和另一个数组传递给ndcg_score 函数来计算它们的NDCG 分数。地面实况数组的值为[5, 4, 3, 2, 1],而另一个数组的值为[5, 4, 3, 2, 0],因此这两个数组中只有最后一个元素不同。
from sklearn.metrics import ndcg_score
user_ndcg = ndcg_score(array([[5, 4, 3, 2, 1]]), array([[5, 4, 3, 2, 0]]))
我预计结果约为 0.96233 (9.88507/10.27192)。然而,user_ndcg 居然返回了1.0,这让我很吃惊。最初我认为这是由于四舍五入造成的,但事实并非如此,因为当我对另一组数组:ndcg_score(array([[5, 4, 3, 2, 1]]), array([[5, 4, 0, 2, 0]])) 进行实验时,它正确返回了 0.98898。
有谁知道这可能是 sklearn ndcg_score 函数的错误,还是我的代码有问题?
【问题讨论】:
-
基本事实是只有一次观察,还是应该是 5 次观察?
-
@ArturoSbr 基本事实应该是 5 次观察。
标签: scikit-learn ranking recommendation-engine