import numpy as np
from scipy.stats import hmean
from scipy.stats.mstats import gmean
[docs]def mean_reciprocal_rank(ranks):
return np.mean(1 / np.array(ranks))
[docs]def mean_rank(ranks):
return np.mean(ranks)
[docs]def geometric_mean_rank(ranks):
return gmean(ranks)
[docs]def harmonic_mean_rank(ranks):
return hmean(ranks)
[docs]def std_rank(ranks):
return np.std(ranks)
[docs]def hits_at_k(ranks, k):
assert k >= 1, "k needs >= 1"
return np.mean(np.array(ranks) <= k)