Spaces:
Runtime error
Runtime error
import pandas as pd | |
import plotly.express as px | |
import numpy as np | |
import matplotlib.pyplot as plt | |
import gradio as gr | |
from math import sqrt | |
import matplotlib | |
matplotlib.use("Agg") | |
genre_df = pd.read_csv("ml-100k/ml-100k/u.genre", | |
sep="|", names=["genreName", "count"]) | |
user_df = pd.read_csv("ml-100k/ml-100k/u.user", sep="|", | |
names=["userID", "age", "gender", "occupation", "zip_code"]) | |
movie_df = pd.read_csv("ml-100k/ml-100k/u.item", sep="|", names=["itemID", "title", "release_date", "video_release_date", "IMDb_URL", "unknown", "Action", "Adventure", "Animation", "Children's", "Comedy", "Crime", "Documentary", "Drama", "Fantasy", "Film-Noir", "Horror", "Musical", "Mystery", "Romance", "Sci-Fi", "Thriller", "War", "Western"],encoding='latin-1') | |
prediction_df = pd.read_csv(r"pred.csv", sep=",") | |
def mappingMovie(mid): | |
return movie_df.loc[movie_df["itemID"].values==mid]["title"].values[0] | |
prediction_df["Movie Title"] = prediction_df["itemID"].apply(mappingMovie) | |
df = pd.read_csv("ml-100k/ml-100k/u.data", sep="\t", names=["userID", "itemID", "rating", "timestamp"]) | |
rating_df = df[df["rating"]>=1.0] | |
rating_df["Movie Title"] = rating_df["itemID"].apply(mappingMovie) | |
print(rating_df.head(7)) | |
num_users = len(prediction_df["userID"].unique()) | |
def get_top_rated_movies_from_user(id): | |
entire_df= rating_df[rating_df["userID"]==id].sort_values(by="rating", ascending=False).head(10) | |
return entire_df | |
def get_recommendations(id): | |
entire_df= prediction_df[prediction_df["userID"]==id].sort_values(by="prediction", ascending=False).head(10) | |
entire_df.drop(columns=["Unnamed: 0"], inplace=True) | |
return entire_df | |
def update_user(id): | |
return get_top_rated_movies_from_user(id), get_recommendations(id) | |
def random_user(): | |
return update_user(np.random.randint(0, num_users-1)) | |
demo = gr.Blocks() | |
with demo: | |
gr.Markdown(""" | |
<div> | |
<h1 style='text-align: center'>Movie Recommender</h1> | |
LightGCN++ is used to predict the top 10 recommended movies for a particular user from the dataset based on that user and previous movies they have rated. | |
</div> | |
""") | |
with gr.Box(): | |
gr.Markdown( | |
""" | |
### Input | |
#### Select a user to get recommendations for. | |
""") | |
inp1 = gr.Slider(0, num_users-1, value=0, label='User') | |
# btn1 = gr.Button('Random User') | |
# top_rated_from_user = get_top_rated_from_user(0) | |
gr.Markdown( | |
""" | |
<br> | |
""") | |
gr.Markdown( | |
""" | |
#### Movies with the Highest Ratings from this user | |
""") | |
df1 = gr.DataFrame(headers=["title", "genres"], datatype=["str", "str"], interactive=False) | |
with gr.Box(): | |
# recommendations = get_recommendations(0) | |
gr.Markdown( | |
""" | |
### Output | |
#### Top 10 movie recommendations | |
""") | |
df2 = gr.DataFrame(headers=["title", "genres"], datatype=["str", "str"], interactive=False) | |
gr.Markdown(""" | |
<p style='text-align: center'> | |
<a href='https://github.com/Jimut123/FML_Project' target='_blank' style='text-decoration: underline'></a> | |
<br> | |
Space by Prateek Chanda (prateekiiest) | |
</p> | |
""") | |
inp1.change(fn=update_user, | |
inputs=inp1, | |
outputs=[df1, df2]) | |
demo.launch() |