Rekomendacje na podstawie profilu użytkownika

Budowanie systemów rekomendacji w Pythonie

Rob O'Callaghan

Director of Data

Rekomendacje element–element

Schemat rekomendacji opartych na podobieństwie elementów.

Budowanie systemów rekomendacji w Pythonie

Profile użytkowników

tfidf_summary_df:

Książka Przygoda Fantasy Tragedia Komentarz społeczny
The Hobbit 1 1 0 0
Macbeth 0 0 1 0
... ... ... ... ...

Profil użytkownika:

Profil użytkownika Przygoda Fantasy Tragedia Komentarz społeczny
User_001 ??? ??? ??? ???
Budowanie systemów rekomendacji w Pythonie

Wyodrębnianie danych użytkownika

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    ...
Budowanie systemów rekomendacji w Pythonie

Budowanie profilu użytkownika

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, ...]
Budowanie systemów rekomendacji w Pythonie

Znajdowanie rekomendacji dla użytkownika

# 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"])
Budowanie systemów rekomendacji w Pythonie

Najlepsze rekomendacje

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
...                                     ...
Budowanie systemów rekomendacji w Pythonie

Czas na ćwiczenia!

Budowanie systemów rekomendacji w Pythonie

Preparing Video For Download...