Consigli basati sul profilo utente

Creare motori di raccomandazione in Python

Rob O'Callaghan

Director of Data

Consigli item-to-item

Immagine che mostra consigli basati su elementi simili.

Creare motori di raccomandazione in Python

Profili utente

tfidf_summary_df:

Libro Avventura Fantasy Tragedia Commento sociale
The Hobbit 1 1 0 0
Macbeth 0 0 1 0
... ... ... ... ...

Profilo utente:

Profilo utente Avventura Fantasy Tragedia Commento sociale
User_001 ??? ??? ??? ???
Creare motori di raccomandazione in Python

Estrai i dati utente

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    ...
Creare motori di raccomandazione in Python

Crea il profilo utente

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, ...]
Creare motori di raccomandazione in Python

Trovare consigli per un utente

# 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"])
Creare motori di raccomandazione in Python

Ottenere i migliori consigli

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
...                                     ...
Creare motori di raccomandazione in Python

Passiamo alla pratica!

Creare motori di raccomandazione in Python

Preparing Video For Download...