Skip to content

Instantly share code, notes, and snippets.

@cle-ment
Created March 17, 2017 09:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save cle-ment/c8abe8d737053df0962718d628a8fdd3 to your computer and use it in GitHub Desktop.
Save cle-ment/c8abe8d737053df0962718d628a8fdd3 to your computer and use it in GitHub Desktop.
def dcg(relevances, rank=10):
"""Discounted cumulative gain at rank (DCG)"""
relevances = np.asarray(relevances)[:rank]
n_relevances = len(relevances)
if n_relevances == 0:
return 0.
discounts = np.log2(np.arange(n_relevances) + 2)
return np.sum(relevances / discounts)
def ndcg(relevances, rank=10):
"""Normalized discounted cumulative gain (NDGC)"""
best_dcg = dcg(sorted(relevances, reverse=True), rank)
if best_dcg == 0:
return 0.
return dcg(relevances, rank) / best_dcg
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment