def recommender_setup_train(): recommenders = [] topPop = TopPop(URM_train) topPop.fit() topPopRecommender = recommenderEntry(topPop, "topPop") recommenders.append(topPopRecommender) elasticNet = ElasticNetRecommender(URM_train) elasticNet.fit("train") elasticNetRecommender = recommenderEntry(elasticNet, "elasticNet") recommenders.append(elasticNetRecommender) pureSVD = PureSVDRecommender(URM_train) pureSVD.fit() pureSVDRecommender = recommenderEntry(pureSVD, "pureSVD") recommenders.append(pureSVDRecommender) sslim = ReccomenderSslim(URM_train) sslim.fit(train="-train") sslimRecommender = recommenderEntry(sslim, "sslim") recommenders.append(sslimRecommender) CFItem = ItemKNNCFRecommender(URM_train) CFItem.fit(shrink=25, topK=10, similarity="jaccard", feature_weighting="TF-IDF", normalize=False) CFItemRecommender = recommenderEntry(CFItem, "CFItem") recommenders.append(CFItemRecommender) slim = SLIM_BPR_Recommender(URM_train) slim.fit(path="../../", train="-train") slimRecommender = recommenderEntry(slim, "slim") recommenders.append(slimRecommender) CFUser = UserKNNCFRecommender(URM_train) CFUser.fit(703, 25, "asymmetric") CFUserRecommender = recommenderEntry(CFUser, "CFUser") recommenders.append(CFUserRecommender) CBItem = ItemKNNCBFRecommender(URM_train, ICM_all) CBItem.fit(shrink=120, topK=5, similarity="asymmetric", feature_weighting="none", normalize=True) CBItemRecommender = recommenderEntry(CBItem, "CBItem") recommenders.append(CBItemRecommender) P3a = P3alphaRecommender(URM_train) P3a.fit(alpha=0.25662502344934046, min_rating=0, topK=25, implicit=True, normalize_similarity=True) P3aRecommender = recommenderEntry(P3a, "P3a") recommenders.append(P3aRecommender) P3b = RP3betaRecommender(URM_train) P3b.fit(alpha=0.22218786834129392, beta=0.23468317063424235, min_rating=0, topK=25, implicit=True, normalize_similarity=True) P3bRecommender = recommenderEntry(P3b, "P3b") recommenders.append(P3bRecommender) return recommenders
def filter_seen(self, user_id, scores): start_pos = self.test.indptr[user_id] end_pos = self.test.indptr[user_id + 1] user_profile = self.test.indices[start_pos:end_pos] scores[user_profile] = -np.inf return scores URM_train, URM_test = train_test_holdout(URM_all, train_perc=0.8) URM_train, URM_validation = train_test_holdout(URM_train, train_perc=0.9) itemColl = ItemKNNCFRecommender(URM_train) #itemColl.fit(shrink=106, topK=63, similarity="jaccard") userColl = UserKNNCFRecommender(URM_train) userColl.fit(shrink=100, topK=3, similarity="cosine") itemCont = ItemKNNCBFRecommender(URM_all, ICM_all) #itemCont.fit(shrink=120, topK=5, similarity="jaccard") pureSVD = PureSVDRecommender(URM_all) #pureSVD.fit() hybridrecommender = ItemKNNScoresHybridRecommender(URM_train, userColl, userColl, userColl, userColl)
# rank items ranking = scores.argsort()[::-1] return ranking[:at] def filter_seen(self, user_id, scores): start_pos = self.URM.indptr[user_id] end_pos = self.URM.indptr[user_id + 1] user_profile = self.URM.indices[start_pos:end_pos] scores[user_profile] = -np.inf return scores itemColl = ItemKNNCFRecommender(URM_all) itemColl.fit(shrink=50, topK=10) elasticNet = SLIMElasticNetRecommender(URM_all) elasticNet.fit() users = utils.get_target_users("../../Dataset/target_users.csv") hybridrecommender = ItemKNNScoresHybridRecommender(URM_all, itemColl, elasticNet) hybridrecommender.fit(0.3) with open("../../../Outputs/itemColl+elasticNet_0.3.csv", 'w') as f: f.write("user_id,item_list\n") for user_id in users: f.write(str(user_id) + ", " + utils.trim(hybridrecommender.recommend(user_id)[:10]) + "\n") hybridrecommender.fit(0.5)
from External_Libraries.Base.Evaluation.Evaluator import EvaluatorHoldout from External_Libraries.ParameterTuning.SearchBayesianSkopt import SearchBayesianSkopt from skopt.space import Real, Integer, Categorical from External_Libraries.ParameterTuning.SearchAbstractClass import SearchInputRecommenderArgs URM_all = sps.csr_matrix(sps.load_npz("../../../../Dataset/old/data_all.npz")) """ URM_train = sps.csr_matrix(sps.load_npz("../../../../../Dataset/data_train.npz")) URM_test = sps.csr_matrix(sps.load_npz("../../../../../Dataset/data_test.npz")) """ ICM_all = sps.csr_matrix(sps.load_npz("../../../../Dataset/ICM/ICM_all.npz")) URM_train, URM_test = train_test_holdout(URM_all, train_perc=0.8) URM_train, URM_validation = train_test_holdout(URM_train, train_perc=0.9) itemKNNCF = ItemKNNCFRecommender(URM_train) itemKNNCF.fit(shrink=25, topK=10, similarity="jaccard", feature_weighting="TF-IDF", normalize=False) itemKNNCBF = ItemKNNCBFRecommender(URM_train, ICM_all) itemKNNCBF.fit(shrink=120, topK=5, similarity="asymmetric", feature_weighting="none", normalize=True) W_sparse_CF = itemKNNCF.W_sparse W_sparse_CBF = itemKNNCBF.W_sparse
pyplot.plot(x_tick, MAP_per_shrinkage) pyplot.ylabel('MAP') pyplot.xlabel('Shrinkage') pyplot.savefig("shrink.png") #users = utils.get_target_users("../../../../../Dataset/users_clusters/Coll_I.csv") users = utils.get_target_users("../../../../../Dataset/target_users.csv") with open("../../../../../Outputs/Coll_I.csv", 'w') as f: f.write("user_id,item_list\n") for user_id in users: f.write(str(user_id) + ", " + utils.trim(recommender.recommend(user_id, at=10)) + "\n") ''' URM_test = sps.csr_matrix( sps.load_npz("../../../../Dataset/URM/data_test.npz")) users = utils.get_target_users("../../../../Dataset/target_users.csv", seek=8) URM = sps.csr_matrix(sps.load_npz("../../../../Dataset/URM/data_all.npz")) validator = validate(URM_test, [10]) mauri_recsys = ItemKNNCFRecommender(URM) mauri_recsys.fit(shrink=25, topK=10, similarity="jaccard", feature_weighting="TF-IDF", normalize=False) print(evaluate.evaluate(users, mauri_recsys, URM_test, 10)["MAP"]) results = validator.evaluateRecommender(mauri_recsys) print(results[0][10]["MAP"]) # SHRINK:10, K:100, SIMILARITY:asymmetric, FEATURE=none, NORM=False @ 0.023746