def perform_evaluation_slim(recommender, test_data: dict): """Takes an already fitted recommender and evaluates on test data. If test_mode is false writes the submission""" if not test_data: print("Missing test data! Exiting...") exit(-1) print("Performing evaluation on test set...") MAP_final = 0.0 evaluator = Evaluator() for user in tqdm(test_data.keys()): recommended_items = recommender.recommend(int(user), exclude_seen=True)[:10] relevant_item = test_data[int(user)] MAP_final += evaluator.MAP(recommended_items, relevant_item) MAP_final /= len(test_data.keys()) MAP_final *= 0.665 print("MAP-10 score:", MAP_final) return MAP_final
def perform_evaluation(recommender): """Takes an already fitted recommender and evaluates on test data. If test_mode is false writes the submission""" print("Performing evaluation on test set...") MAP_final = 0.0 evaluator, helper = Evaluator(), Helper() URM_train, eval_data = helper.URM_train_validation, helper.validation_data recommender.fit(URM_train) for user in tqdm(eval_data.keys()): recommended_items = recommender.recommend(int(user), exclude_seen=True) relevant_item = eval_data[int(user)] MAP_final += evaluator.MAP(recommended_items, relevant_item) MAP_final /= len(eval_data.keys()) print("MAP-10 score:", MAP_final) MAP_final *= 0.665 print("MAP-10 public approx score:", MAP_final) return MAP_final
# relevant_item = URM_all[int(user), :].toarray().squeeze() #print(recommended_items) # items = np.argwhere(relevant_item > 0) # # np.random.shuffle(items) # relevant_item = items[:10].squeeze() # print(relevant_item) #relevant_item = helper.convert_list_of_string_into_int(relevant_item) # print(recommended_items) MAP_final += evaluator.MAP(recommended_items, relevant_item) MAP_final /= len(target_users_test) print(MAP_final) if __name__ == '__main__': helper = Helper() # Train and test data are now loaded by the helper URM_train, test_data = helper.get_train_evaluation_data() weights_hybrid = {"cbf": 0.3, "cb": 0.7} recommender = SLIMRecommender(URM_train) recommender.fit(epochs=20)