sklearn 中 nDCG 的输入
Posted
技术标签:
【中文标题】sklearn 中 nDCG 的输入【英文标题】:inputs for nDCG in sklearn 【发布时间】:2018-10-03 23:22:41 【问题描述】: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 是概率。所以以下是我的问题:
-
此示例仅适用于一个查询还是多个查询?
如果这只是一个查询,那么 y_true 代表什么:原始排名?
如果这是针对单个查询,为什么我们有多个输入概率?
如何将此方法应用于多个查询及其结果概率?
【问题讨论】:
也许这会有所帮助:github.com/scikit-learn/scikit-learn/issues/… 【参考方案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 个文档属于第 2 类(最大值为 0.9)。缺少文档,示例也具有误导性。如果有四个文件会更好。
如何将此方法应用于多个查询及其结果概率?
然后,您可以在多个查询中平均每个查询的 nDCG 分数。
【讨论】:
以上是关于sklearn 中 nDCG 的输入的主要内容,如果未能解决你的问题,请参考以下文章
sklearn:发现样本数量不一致的输入变量:[1, 99]