File size: 1,385 Bytes
60a65c8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
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()