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,
Пример #2
0
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,
Пример #3
0
    # 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)