Recomendações por perfil de usuário

Construindo mecanismos de recomendação em Python

Rob O'Callaghan

Director of Data

Recomendações item a item

Imagem mostrando recomendações com base em itens semelhantes.

Construindo mecanismos de recomendação em Python

Perfis de usuário

tfidf_summary_df:

Book Adventure Fantasy Tragedy Social commentary
The Hobbit 1 1 0 0
Macbeth 0 0 1 0
... ... ... ... ...

Perfil do usuário:

User Profile Adventure Fantasy Tragedy Social commentary
User_001 ??? ??? ??? ???
Construindo mecanismos de recomendação em Python

Extrair os dados do usuário

list_of_books_read = ['The Hobbit', 'Foundation', 'Nudge']

user_books = tfidf_summary_df.reindex(list_of_books_read)
print(user_books)
               age   ancient   angry   brave   battle   fellow    ...
 The Hobbit   0.21      0.53    0.41    0.64     0.01     0.02    ...
 Foundation   0.31      0.90    0.42    0.33     0.64     0.04    ...
      Nudge   0.61      0.01    0.45    0.31     0.12     0.74    ...
Construindo mecanismos de recomendação em Python

Construir o perfil do usuário

user_prof = user_movies.mean()

print(user_prof)
age      0.376667
ancient  0.480000
angry    0.426667
brave    0.256667
             ...
print(user_prof.values.reshape(1,-1))
[0.376667, .480000, 0.426667, 0.256667, ...]
Construindo mecanismos de recomendação em Python

Encontrar recomendações para um usuário

# Create a subset of only the non read books
non_user_movies = tfidf_summary_df.drop(list_of_movies_seen, axis=0)

# Calculate the cosine similarity between all rows user_prof_similarities = cosine_similarity(user_prof.values.reshape(1, -1), non_user_movies)
# Wrap in a DataFrame for ease of use user_prof_similarities_df = pd.DataFrame(user_prof_similarities.T, index=tfidf_summary_df.index, columns=["similarity_score"])
Construindo mecanismos de recomendação em Python

Pegando as principais recomendações

sorted_similarity_df = user_prof_similarities.sort_values(by="similarity_score",
                                                         ascending=False)

print(sorted_similarity_df)
                                similarity_score
Title                                           
The Two Towers                          0.422488
Dune                                    0.363540
The Magicians Nephew                    0.316075
...                                     ...
Construindo mecanismos de recomendação em Python

Vamos praticar!

Construindo mecanismos de recomendação em Python

Preparing Video For Download...