def eval()

in mapillary_sls/utils/eval.py [0:0]


def eval(query_keys, positive_keys, predictions, ks = [1, 5, 10, 20]):

    # ensure that the positive and predictions are for the same elements
    pred_queries = predictions[:,0:1]
    pred2gt = [np.where(pred_queries == key)[0][0] for key in query_keys]

    # change order to fit with ground truth
    predictions = predictions[pred2gt,1:]

    recall_at_k = recall(predictions, positive_keys, ks)

    metrics = {}
    for i, k in enumerate(ks):
        metrics['recall@{}'.format(k)] = recall_at_k[i]
        metrics['map@{}'.format(k)] = mapk(predictions, positive_keys, k)

    return metrics