import pandas as pd import numpy as np import sklearn from sklearn.metrics.pairwise import cosine_similarity # Load movie metadata into a pandas DataFrame movie_data = pd.read_csv('movies_metadata.csv', usecols=['title', 'budget', 'revenue', 'vote_count', 'vote_average']) # Load movie ratings into a pandas DataFrame ratings_data = pd.read_csv('ratings_small.csv') # Collaborative Filtering def collaborative_filtering(user_id, num_recommendations=5): user_ratings = ratings_data[ratings_data['userId'] == user_id] user_ratings = user_ratings.merge(movie_data[['title']], left_on='movieId', right_index=True) user_ratings = user_ratings.drop_duplicates(subset=['title'], keep='first') # Get the mean ratings for each movie movie_ratings_mean = ratings_data.groupby('movieId')['rating'].mean().reset_index() # Merge with movie data to get movie titles movie_ratings_mean = movie_ratings_mean.merge(movie_data[['title']], left_on='movieId', right_index=True) movie_ratings_mean = movie_ratings_mean.drop_duplicates(subset=['title'], keep='first') # Sort movies by mean rating in descending order top_movies = movie_ratings_mean.sort_values(by='rating', ascending=False)['title'][:num_recommendations] return top_movies.tolist() import gradio as gr with gr.Blocks() as demo: gr.Markdown("Flip text or image files using this demo.") title="Movie Recommender System" user_id = gr.Textbox(placeholder='user_id') #input2 = gr.Textbox(placeholder='second film name...') #input3 = gr.Textbox(placeholder='third film name...') text_output=gr.Textbox( ) text_button = gr.Button("Submit") text_button.click(collaborative_filtering, inputs=user_id, outputs=text_output) demo.launch()