item_ids = list(set(training_items.keys() + test_items.keys())) #all unique items in the dataset hits = 0 div_metric1 = [] div_metric2 = [] recommended_ratings = [] for u in test_users.keys(): for i in test_users[u].keys(): user_items = [] if u in training_users: user_items = training_users[u].keys() if u in test_users: user_items += test_users[u].keys() items_for_cremonesi_validation = testing.choose_some_items( item_ids, user_items, i, 40) ratings = recommender.get_ratings(u, items_for_cremonesi_validation) recommendations = ranker.topRatings(ratings) #recommendations = ranker.maximizeKGreatItems(1, ratings, training_items) recommended_ratings += ev.totalOfRatings(u, recommendations) hits += ev.hadAHit(recommendations, i) div_metric1.append( ev.simpleDiversity(recommendations, training_items)) div_metric2.append( ev.diversityEILD(recommendations, training_items)) test_size = 3191.0 print 'rec', hits / test_size, 'prec', hits / (test_size * N) print 'sim simple', sum(div_metric1) / len(div_metric1)
#TODO clean this interface! item_ids = list(set(training_items.keys() + test_items.keys())) #all unique items in the dataset hits = 0 div_metric1 = [] div_metric2 = [] recommended_ratings = [] for u in test_users.keys(): for i in test_users[u].keys(): user_items = [] if u in training_users: user_items = training_users[u].keys() if u in test_users: user_items += test_users[u].keys() items_for_cremonesi_validation = testing.choose_some_items(item_ids, user_items, i, 40) ratings = recommender.get_ratings(u, items_for_cremonesi_validation) recommendations = ranker.topRatings(ratings) #recommendations = ranker.maximizeKGreatItems(1, ratings, training_items) recommended_ratings += ev.totalOfRatings(u, recommendations) hits += ev.hadAHit(recommendations, i) div_metric1.append(ev.simpleDiversity(recommendations, training_items)) div_metric2.append(ev.diversityEILD(recommendations, training_items)) test_size = 3191.0 print 'rec', hits/test_size, 'prec', hits/(test_size * N) print 'sim simple', sum(div_metric1)/len(div_metric1) print 'div vargas', sum(div_metric2)/len(div_metric2)