Exemplo n.º 1
0
    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
Exemplo n.º 2
0
    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)