MCPcopy
hub / github.com/daveebbelaar/ai-cookbook / ndcg_at_k

Function ndcg_at_k

knowledge/hybrid-retrieval/6-evaluate.py:42–50  ·  view source on GitHub ↗

Normalized discounted cumulative gain for a single query.

(predicted_ids: list[str], relevant: dict[str, int], k: int = 10)

Source from the content-addressed store, hash-verified

40
41
42def ndcg_at_k(predicted_ids: list[str], relevant: dict[str, int], k: int = 10) -> float:
43 """Normalized discounted cumulative gain for a single query."""
44 dcg = sum(
45 relevant.get(doc_id, 0) / math.log2(rank + 2)
46 for rank, doc_id in enumerate(predicted_ids[:k])
47 )
48 ideal_rels = sorted(relevant.values(), reverse=True)[:k]
49 idcg = sum(rel / math.log2(rank + 2) for rank, rel in enumerate(ideal_rels))
50 return dcg / idcg if idcg > 0 else 0.0
51
52
53# --------------------------------------------------------------

Callers 1

6-evaluate.pyFile · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected