sklearn中nDCG的输入

时间:2018-04-23 20:03:58

标签: python machine-learning scikit-learn ranking xgboost

我无法理解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是概率。以下是我的问题:

  1. 此示例仅用于一个查询还是多个查询?
  2. 如果这只是一个查询,那么y_true代表什么:原始排名?
  3. 如果这是针对单个查询以及为什么我们有多个输入概率?
  4. 如何将此方法应用于多个查询及其产生的概率?

1 个答案:

答案 0 :(得分:1)

您可以像处理多类分类问题一样查看它。

所以回答你的问题

  
      
  1. 此示例仅用于一个查询还是多个查询?
  2.   

一个查询

  
      
  1. 如果这仅用于一个查询,那么y_true代表什么:原始排名?
  2.   

我将其称为文档的相关性标签,因为它可能具有重复的值。

  
      
  1. 如果这是一个查询,为什么我们有多个输入概率?
  2.   

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) 。缺少文档,该示例也具有误导性。如果有四个文档,那就更好了。

  
      
  1. 该方法如何应用于多个查询及其产生的概率?
  2.   

然后您可以将多个查询中每个查询的nDCG分数取平均值。