File size: 1,029 Bytes
9c58361 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
from project.evaluation.ranking_metrics import mean_average_precision, ndcg_at, precision_at
def __Prec(topn, test):
num_intersect = len(set.intersection(set(topn), set(test)))
num_rec = len(topn)
return num_intersect / num_rec
def __Rec(topn, test):
num_intersect = len(set.intersection(set(topn), set(test)))
num_test = len(list(set(test)))
return num_intersect / num_test
def Hitrate(topn, test):
num_intersect = len([value for value in list(set(test)) if value in topn])
num_rec = len(topn)
return num_intersect / num_rec
def __F1(prec, rec):
return (2 * ((prec * rec) / (prec + rec))) if (prec + rec) > 0 else 0
def get_metrics(topn, test):
prec = __Prec(topn, test)
rec = __Rec(topn, test)
f = __F1(prec, rec)
MAP = mean_average_precision([test], [topn], assume_unique=False)
ndcg_5 = ndcg_at([test], [topn], k=5, assume_unique=False)
p_5 = precision_at([test], [topn], k=5, assume_unique=False)
return [prec, rec, f, MAP, ndcg_5, p_5] |