import gradio as gr import torch, numpy as np, pandas as pd import skimage import pickle defaultColumns = ['movieId', 'rating'] movies_df = pd.read_csv("./csv/movies.csv") ratings_df = pd.read_csv("./csv/ratings.csv") options = movies_df['title'].values with open("model.pkl", "rb") as f: model = pickle.load(f) def recomendacao(filme, nota): f_filme = movies_df.loc[movies_df['title'] == filme]['movieId'][0] f_nota = float(nota) default = [ f_filme, f_nota ] df=pd.DataFrame([default], columns = defaultColumns) predictions = model.predict(df) user_rating = ratings_df.loc[ratings_df['userId'] == predictions[0]] top_ratings = user_rating.sort_values(by='rating', ascending=False) top_movies = top_ratings.head(5)['movieId'].tolist() recomendacoes = [] for movie_id in top_movies: movie = movies_df.loc[movies_df['movieId'] == movie_id] title = movie['title'].values[0] recomendacoes.append(title) recomendacoes result = recomendacoes return result iface = gr.Interface( fn=recomendacao, title="Win Predict", allow_flagging="never", inputs=[ gr.Dropdown(options, label="Filme", info="Escolha o nome de um filme"), gr.Slider(0, 5, value=0, label="Rating", info="DĂȘ uma nota entre 0 e 5"), ], outputs="text") iface.launch()