From 64fb85ff17ebbc6c14cbc91387bfb1da91e77447 Mon Sep 17 00:00:00 2001 From: Adrien <adrien.payen@student.uclouvain.be> Date: Fri, 24 May 2024 18:41:24 +0200 Subject: [PATCH] update files --- Home.py | 4 ++-- pages/Discover.py | 8 ++++---- recommender.py | 18 +++++++++--------- 3 files changed, 15 insertions(+), 15 deletions(-) diff --git a/Home.py b/Home.py index d9754e7c..955aa963 100644 --- a/Home.py +++ b/Home.py @@ -200,7 +200,7 @@ def display_content_based_recommendations(user_name, user_id=-1, n=15): cols_html = "" # Get top N recommendations using content-based filtering - top_n_recommendations = test_contentbased_class(["title_length", "movie_year", "genre", "avg_rating"], "ridge_regression", user_id=-1, n=10) + top_n_recommendations = test_contentbased_class(["title_length", "movie_year", "genre", "avg_rating"], "ridge_regression", user_id=-1, n=15) if top_n_recommendations: st.subheader(f"Discover Great Content") # Display section title @@ -262,7 +262,7 @@ def main(): user_df = user_options[selected_user] # Get the user's dataframe # Display content-based recommendations - display_content_based_recommendations(selected_user, user_id_options[selected_user], n=10) + display_content_based_recommendations(selected_user, user_id_options[selected_user], n=15) # Display latent factor model recommendations display_recommendations_latent_factor(selected_user, user_id_options[selected_user]) # Display OtherUserBased recommendations diff --git a/pages/Discover.py b/pages/Discover.py index 009d1791..8fd70d11 100644 --- a/pages/Discover.py +++ b/pages/Discover.py @@ -22,7 +22,7 @@ def display_unrated_movies(df_ratings, merged_df): # Remove duplicate movies based on 'tmdbId' unique_unrated_movies_df = unrated_movies_df.drop_duplicates(subset='tmdbId') # Sort movies by 'tmdbId' in descending order and select the top 10 - sorted_movies_df = unique_unrated_movies_df.sort_values(by='tmdbId', ascending=False).head(10) + sorted_movies_df = unique_unrated_movies_df.sort_values(by='tmdbId', ascending=False).head(15) cols_html = "" # Generate HTML for displaying each unrated movie for idx, row in sorted_movies_df.iterrows(): @@ -54,7 +54,7 @@ def display_movies_year(merged_df): # Sort movies by 'annee' (year of release) in descending order sorted_movies_df = unique_movies_df.sort_values(by='annee', ascending=False) # Select the top 10 movies based on TMDB ID - top_10_tmdbIds = sorted_movies_df['tmdbId'].head(10) + top_10_tmdbIds = sorted_movies_df['tmdbId'].head(15) # Generate HTML for displaying each new movie for tmdbId in top_10_tmdbIds: title_dict, poster_url = fetch_movie_info(tmdbId) @@ -71,7 +71,7 @@ def display_movies_year(merged_df): </div> """, unsafe_allow_html=True) -def display_movies_by_genre(df, num_movies=10): +def display_movies_by_genre(df, num_movies=15): """ Display sections for top movies by genre. @@ -119,7 +119,7 @@ def main(): # Display sections for new movies, unrated movies, and top movies by genre display_movies_year(filtered_movies) display_unrated_movies(df_ratings, filtered_movies) - display_movies_by_genre(filtered_movies, num_movies=10) + display_movies_by_genre(filtered_movies, num_movies=15) # Entry point for the script if __name__ == "__main__": diff --git a/recommender.py b/recommender.py index a89e4595..1b7ff0c4 100644 --- a/recommender.py +++ b/recommender.py @@ -166,7 +166,7 @@ class UserBased(AlgoBase): self.mean_ratings = mean_ratings - def get_top_n_pred_ub(self, testset, target_user, n=10): + def get_top_n_pred_ub(self, testset, target_user, n=15): """ Get the top N predictions for a specific target user. @@ -331,7 +331,7 @@ class RecommenderSystem_KNN : predictions = self.model.test(self.testset) return accuracy.mae(predictions) - def get_top_n_recommendations(self, userid, n=10): + def get_top_n_recommendations(self, userid, n=15): """ Get the top N recommendations for a specific user. @@ -477,7 +477,7 @@ class OtherUserBased: data = pd.read_csv(csv_file) return data['movieId'].unique() - def get_top_n_predictions_for_user(self, csv_file, n=10): + def get_top_n_predictions_for_user(self, csv_file, n=15): """ Get the top N predictions for all users. @@ -494,7 +494,7 @@ class OtherUserBased: for item_id in all_item_ids: prediction = self.model.estimate(self.user_id, item_id) predictions.append((item_id, prediction)) - top_10_predictions = sorted(predictions, key=lambda x: x[1], reverse=True)[:10] + top_10_predictions = sorted(predictions, key=lambda x: x[1], reverse=True)[:15] return top_10_predictions # Return the predictions here @@ -686,7 +686,7 @@ def evaluate_inter_user_diversity(user_based_model, ratings_path, other_user_bas for user_id in range(user_based_model.trainset.n_users): try: trainset_user_id = user_based_model.trainset.to_raw_uid(user_id) - top_n_recommendations_ub = user_based_model.get_top_n_pred_ub(testset, target_user=trainset_user_id, n=10) + top_n_recommendations_ub = user_based_model.get_top_n_pred_ub(testset, target_user=trainset_user_id, n=15) all_top_n_recommendations_ub[trainset_user_id] = top_n_recommendations_ub except ValueError: print(f"User {trainset_user_id} is not part of the training set for UserBased model. Skipping...") @@ -701,7 +701,7 @@ def evaluate_inter_user_diversity(user_based_model, ratings_path, other_user_bas for user_id in range(knn_model.trainset.n_users): try: trainset_user_id = knn_model.trainset.to_raw_uid(user_id) - top_n_recommendations_knn = knn_model.get_top_n_recommendations(trainset_user_id, n=10) + top_n_recommendations_knn = knn_model.get_top_n_recommendations(trainset_user_id, n=15) all_top_n_recommendations_knn[trainset_user_id] = top_n_recommendations_knn except ValueError: print(f"User {trainset_user_id} is not part of the training set for KNN model. Skipping...") @@ -717,7 +717,7 @@ def evaluate_inter_user_diversity(user_based_model, ratings_path, other_user_bas all_user_ids = set(user for user, _, _ in testset) for user_id in all_user_ids: other_model.user_id = user_id # Update the user ID for the model - top_n_predictions = other_model.get_top_n_predictions_for_user(ratings_path, n=10) + top_n_predictions = other_model.get_top_n_predictions_for_user(ratings_path, n=15) all_top_n_recommendations_other[user_id] = top_n_predictions inter_user_diversity_scores[f'Other_{other_model.user_name}'] = other_model.inter_user_diversity(all_top_n_recommendations_other) @@ -741,7 +741,7 @@ other_user_based_models = [ ########################################################################################################################### -def get_top_n(predictions, user_id, n=10): +def get_top_n(predictions, user_id, n=15): """ Return the top-N recommendation for a specific user from a set of predictions. Args: @@ -1007,7 +1007,7 @@ class LatentFactorModel: user_ratings.append((movie_id, prediction)) sorted_ratings = sorted(user_ratings, key=lambda x: x[1], reverse=True) - top_10_ratings = sorted_ratings[:10] + top_10_ratings = sorted_ratings[:15] return top_10_ratings -- GitLab