我无法理解sklearn nDcg的输入格式:http://sklearn.apachecn.org/en/0.19.0/modules/generated/sklearn.metrics.ndcg_score.html
目前我遇到以下问题:我有多个查询,每个查询都已成功计算排名概率。但现在问题是为我想要使用sklearn nDcg的测试集计算nDCG。链接上给出的例子
>>> y_true = [1, 0, 2]
>>> y_score = [[0.15, 0.55, 0.2], [0.7, 0.2, 0.1], [0.06, 0.04, 0.9]]
>>> ndcg_score(y_true, y_score, k=2)
1.0
根据网站,y_true是基本事实,y_score是概率。以下是我的问题:
答案 0 :(得分:1)
您可以像处理多类分类问题一样查看它。
所以回答你的问题
- 此示例仅用于一个查询还是多个查询?
一个查询
- 如果这仅用于一个查询,那么y_true代表什么:原始排名?
我将其称为文档的相关性标签,因为它可能具有重复的值。
- 如果这是一个查询,为什么我们有多个输入概率?
y_score
是属于某个类别的文档的概率分布。在您的示例中,y_score = [[0.15, 0.55, 0.2], [0.7, 0.2, 0.1], [0.06, 0.04, 0.9]]
表示第0个文档属于1类(最大为0.55),第一个文档属于0类(最大为0.7),第二个文档属于2类(最大为0.9) 。缺少文档,该示例也具有误导性。如果有四个文档,那就更好了。
- 该方法如何应用于多个查询及其产生的概率?
然后您可以将多个查询中每个查询的nDCG分数取平均值。