def eval_map(y_true, y_pred, rel_threshold=0):
s = 0.
y_true = np.squeeze(y_true)
y_pred = np.squeeze(y_pred)
c = zip(y_true, y_pred)
random.shuffle(c)
c = sorted(c, key=lambda x:x[1], reverse=True)
ipos = 0
for j, (g, p) in enumerate(c):
if g > rel_threshold:
ipos += 1.
s += ipos / ( j + 1.)
if ipos == 0:
s = 0.
else:
s /= ipos
return s
评论列表
文章目录