from keras.callbacks import ModelCheckpoint from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.metrics import mean_absolute_error import time from time import localtime, strftime import send_email import pickle import load_movies import load_ratings # captura o tempo agora, somente para informação e análise dos resultados date_now = strftime("%d/%m/%Y %H:%M:%S", localtime()) # carrega o dataset de ratings ratings = load_ratings.load('../') # carrega o dataset de filmes movies = load_movies.load('../') # divide o dataset em 80% para treinamento e 20% para teste train, test = train_test_split(ratings, test_size=0.2, random_state=0) n_users, n_movies = len(ratings.userId.unique()), len(ratings.movieId.unique()) embedding_size = 16 # cria as camadas da rede neural movie_input = layers.Input(shape=[1], name='Movie') user_input = layers.Input(shape=[1], name='User') movie_embedding = layers.Embedding(input_dim=n_movies,
from keras.callbacks import ModelCheckpoint from sklearn.model_selection import train_test_split from sklearn.metrics import mean_squared_error from sklearn.metrics import mean_absolute_error import time from time import localtime, strftime import send_email import pickle import load_ratings import evaluate as evl # captura o tempo agora, somente para informação e análise dos resultados date_now = strftime("%d/%m/%Y %H:%M:%S", localtime()) # carrega o dataset de ratings dataset = load_ratings.load('../') # divide o dataset em 80% para treinamento e 20% para teste train, test = train_test_split(dataset, test_size=0.3, random_state=0) n_users, n_movies = len(dataset.userId.unique()), len(dataset.movieId.unique()) embedding_size = 10 # cria as camadas, usando uma matrix de fatorização não negativa movie_input = layers.Input(shape=[1], name='Movie') user_input = layers.Input(shape=[1], name='User') movie_embedding = layers.Embedding( input_dim=n_movies,
# criando uma lista dos filmes que o usuário classificou rated_movies = list(ratings[ratings['userId'] == user_id]['movieId']) # cria uma lista com os filmes não classificados movies_ids = list(filter(lambda x: x not in rated_movies, movies.movieId)) print("Usuário " + str(user_id) + " assistiu " + str(len(rated_movies)) + " filmes. " + "Calculando ratings para outros " + str(len(movies_ids)) + " filmes.") movies['scaled_year'] = scale(movies['year'].astype('float64')) movies_ids = np.array(movies_ids) user = np.zeros_like(movies_ids) user[:] = user_id rating_preds = model.predict([user, movies_ids]) movies_ids = np.argsort(rating_preds[:, 0])[::-1].tolist() rec_items = movies_ids[:top_n] return [(movies['title'][movie], str(int(movies['year'][movie])), rating_preds[movie][0]) for movie in rec_items] movies = load_movies.load() ratings = load_ratings.load() # carrega o modelo model = load_model('models/NOME_DO_MODELO') # entra com os dados do método e com o número do usuário user_id = 'ID DO USÁRIO' recommendations = recommend(movies, ratings, model, user_id) for elem in recommendations: print(elem)