Metrics ยท Medium
Mean Average Precision
Average Precision over every relevant item in the ranked list.
Task
Implement mean_average_precision(labels: list[int], scores: list[float]) -> float. Rank binary relevance labels by descending score, compute precision at every relevant result, and return the mean of those precision values.
Requirements
- Labels are binary, where 1 means relevant.
- Preserve original input order when scores tie.
- For every relevant item in ranked order, compute precision through that item's rank.
- Return the average of those relevant-item precision values.
- Return 0.0 when there are no relevant examples or when the input is empty.
- Do not apply a cutoff; evaluate the full ranked list.
Example
labels = [1, 0, 1, 1]
scores = [0.9, 0.8, 0.7, 0.6]
mean_average_precision(labels, scores)
# 0.8055555556