Example #1
0
    if test:

        hyb.fit(data['train'].tocsr(), data['UCM'].tocsr())

        if split_users:

            group_cold, group_one, group_two, group_three = get_target_users_group(
                data['target_users'], data['train'])

            result_cold = hyb.evaluate_MAP_target(data['test'], group_cold)
            result_one = hyb.evaluate_MAP_target(data['test'], group_one)
            result_two = hyb.evaluate_MAP_target(data['test'], group_two)
            result_three = hyb.evaluate_MAP_target(data['test'], group_three)

            print(
                f'Total MAP: {result_cold["MAP"] + result_one["MAP"] + result_two["MAP"] + result_three["MAP"]:.5f}'
            )

        elif not split_users:
            hyb.evaluate_MAP_target(data['test'], data['target_users'])

        print("\nInitial {}".format(weights_initial))
        print("Middle {}".format(weights_middle))
        print("End {}".format(weights_end))

    else:
        URM_final = data['train'] + data['test']
        URM_final = URM_final.tocsr()
        hyb.fit(URM_final, data['UCM'].tocsr())
        write_output(hyb, target_user_list=data['target_users'])
################################################ Test ##################################################
Example #2
0
        'fw': 'None',
        'a_alpha': 0.0,
        'alpha': 0.12331166243379268,
        'beta': 1.9752288743799558
    }

    max_map = 0
    data = get_data()

    test = True

    args = best_asymmetric

    itemCF = ItemBasedCollaborativeFiltering(args['topK'],
                                             args['shrink'],
                                             feature_weighting=args['fw'],
                                             similarity=args['similarity'],
                                             tversky_alpha=args['alpha'],
                                             tversky_beta=args['beta'],
                                             asymmetric_alpha=args['a_alpha'])

    if test:

        itemCF.fit(data['train'])
        result = itemCF.evaluate_MAP_target(data['test'], data['target_users'])

    else:
        URM_final = data['train'] + data['test']
        itemCF.fit(URM_final)
        write_output(itemCF, target_user_list=data['target_users'])
################################################ Test ##################################################
Example #3
0
        if self.topK != False:
            self.W_sparse = similarityMatrixTopK(self.W_sparse, k=self.topK)

        self.W_sparse = check_matrix(self.W_sparse, format='csr')

        self.RM = self.URM_train.dot(self.W_sparse)

    def get_expected_ratings(self, user_id):
        expected_recommendations = self.RM[user_id].todense()
        return np.squeeze(np.asarray(expected_recommendations))


if __name__ == '__main__':

    train, test = split_train_leave_k_out_user_wise(get_data()['URM_all'],
                                                    k_out=1)

    urm = train + test

    evaluator = EvaluatorHoldout(test, [10])

    rp3 = RP3betaRecommender(urm)
    rp3.fit(alpha=0.032949920239451876,
            beta=0.14658580479486563,
            normalize_similarity=True,
            topK=75)
    # rp3.evaluate_MAP_target(test, get_data()['target_users'])
    # result, result_string = evaluator.evaluateRecommender(rp3)
    write_output(rp3, get_data()['target_users'])
    #print(f"MAP: {result[10]['MAP']:.5f}")
Example #4
0
if __name__ == '__main__':

    evaluate = True

    train, test = split_train_leave_k_out_user_wise(get_data()['URM_all'],
                                                    k_out=1)

    SLIMElasticNet_args = {'l1_ratio': 1e-05, 'alpha': 0.001, 'topK': 1000}

    if evaluate:
        evaluator = EvaluatorHoldout(test, [10],
                                     target_users=get_data()['target_users'])

        slel = SLIMElasticNetRecommender(train)
        slel.fit(l1_ratio=SLIMElasticNet_args['l1_ratio'],
                 topK=SLIMElasticNet_args['topK'],
                 alpha=SLIMElasticNet_args['alpha'])

        result, result_string = evaluator.evaluateRecommender(slel)
        print(f"MAP: {result[10]['MAP']:.5f}")

    else:
        urm_all = train + test
        hybrid = HybridRecommender(urm_all, ucm)
        hybrid.fit(weight_itemcf=weight_itemcf,
                   weight_p3=weight_p3,
                   weight_rp3=weight_rp3,
                   weight_als=weight_als)
        write_output(hybrid, get_data()['target_users'])
        expected_ratings = self.get_expected_ratings(user_id)
        recommended_items = np.flip(np.argsort(expected_ratings), 0)

        if exclude_seen:
            unseen_items_mask = np.in1d(recommended_items,
                                        self.URM_train[user_id].indices,
                                        assume_unique=True,
                                        invert=True)
            recommended_items = recommended_items[unseen_items_mask]

        return recommended_items[:at]

    def get_expected_ratings(self, user_id):
        expected_recommendations = self.RM[user_id].todense()
        return np.squeeze(np.asarray(expected_recommendations))


################################################ Test ##################################################
if __name__ == '__main__':
    data = get_data()

    URM = data['train'].tocsr()
    URM_test = data['test'].tocsr()
    URM_final = URM_test + URM

    FBICF = FeatureBoostedItemCollaborativeFiltering(29, 5)
    FBICF.fit(URM)
    FBICF.evaluate_MAP_target(URM_test, data['target_users'])
    FBICF.fit(URM_final)
    write_output(FBICF, data['target_users'])
################################################ Test ##################################################