我无法理解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

根据site的说法,yútrue是基本真理,yúscore是概率,下面是我的问题:
这个例子是一个查询还是多个查询?
如果这只是一个查询,那么y_true代表什么:原始排名?
如果这是一个查询,为什么我们有多个输入概率?
如何将此方法应用于多个查询及其结果概率?

最佳答案

您可以将其视为类似于多类分类问题。
所以回答你的问题
这个例子是一个查询还是多个查询?
一个查询
如果这只是一个查询,那么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是最大值),第1个文档属于0类(0.7是最大值),第2个文档属于2类(0.9是最大值)。缺少文档,示例也具有误导性。最好有四份文件。
如何将此方法应用于多个查询及其结果概率?
然后,可以在多个查询中平均每个查询的nDCG分数。

关于python - sklearn中nDCG的输入,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49989128/

10-09 19:20