當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python sklearn ndcg_score用法及代碼示例


本文簡要介紹python語言中 sklearn.metrics.ndcg_score 的用法。

用法:

sklearn.metrics.ndcg_score(y_true, y_score, *, k=None, sample_weight=None, ignore_ties=False)

計算歸一化貼現累積增益。

在應用對數折扣後,將按照預測分數誘導的順序排列的真實分數相加。然後除以可能的最佳分數(理想 DCG,獲得完美排名)以獲得介於 0 和 1 之間的分數。

如果真正的標簽排名靠前 y_score ,則此排名指標會產生高值。

參數

y_truendarray 形狀(n_samples,n_labels)

多標簽分類的真實目標,或要排名的實體的真實分數。

y_scorendarray 形狀(n_samples,n_labels)

目標分數可以是概率估計、置信度值或決策的非閾值度量(由 “decision_function” 在某些分類器上返回)。

k整數,默認=無

隻考慮排名中最高的 k 分數。如果 None ,使用所有輸出。

sample_weightndarray 形狀 (n_samples,),默認 = 無

樣本權重。如果 None ,所有樣本都被賦予相同的權重。

ignore_ties布爾,默認=假

假設 y_score 中沒有關係(如果 y_score 是連續的,則可能是這種情況)以提高效率。

返回

normalized_discounted_cumulative_gain浮點數 [0., 1.]

所有樣本的平均 NDCG 分數。

參考

貼現累積收益的維基百科條目

Jarvelin, K. 和 Kekalainen, J. (2002)。 IR 技術的基於累積增益的評估。 ACM 信息係統交易 (TOIS),20(4),422-446。

Wang, Y., Wang, L., Li, Y., He, D., Chen, W., & Liu, T. Y.(2013 年 5 月)。 NDCG排名措施的理論分析。在第 26 屆學習理論年會論文集 (COLT 2013)

McSherry, F. 和 Najork, M.(2008 年 3 月)。在存在並列分數的情況下有效地計算信息檢索性能度量。在歐洲信息檢索會議上(第 414-421 頁)。施普林格,柏林,海德堡。

例子

>>> import numpy as np
>>> from sklearn.metrics import ndcg_score
>>> # we have groud-truth relevance of some answers to a query:
>>> true_relevance = np.asarray([[10, 0, 0, 1, 5]])
>>> # we predict some scores (relevance) for the answers
>>> scores = np.asarray([[.1, .2, .3, 4, 70]])
>>> ndcg_score(true_relevance, scores)
0.69...
>>> scores = np.asarray([[.05, 1.1, 1., .5, .0]])
>>> ndcg_score(true_relevance, scores)
0.49...
>>> # we can set k to truncate the sum; only top k answers contribute.
>>> ndcg_score(true_relevance, scores, k=4)
0.35...
>>> # the normalization takes k into account so a perfect answer
>>> # would still get 1.0
>>> ndcg_score(true_relevance, true_relevance, k=4)
1.0
>>> # now we have some ties in our prediction
>>> scores = np.asarray([[1, 0, 0, 0, 1]])
>>> # by default ties are averaged, so here we get the average (normalized)
>>> # true relevance of our top predictions: (10 / 10 + 5 / 10) / 2 = .75
>>> ndcg_score(true_relevance, scores, k=1)
0.75
>>> # we can choose to ignore ties for faster results, but only
>>> # if we know there aren't ties in our scores, otherwise we get
>>> # wrong results:
>>> ndcg_score(true_relevance,
...           scores, k=1, ignore_ties=True)
0.5

相關用法


注:本文由純淨天空篩選整理自scikit-learn.org大神的英文原創作品 sklearn.metrics.ndcg_score。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。