使用者檔案推薦

用 Python 建立推薦引擎

Rob O'Callaghan

Director of Data

項目對項目推薦

根據尋找相似項目的推薦示意圖。

用 Python 建立推薦引擎

使用者檔案

tfidf_summary_df:

書籍 Adventure Fantasy Tragedy Social commentary
The Hobbit 1 1 0 0
Macbeth 0 0 1 0
... ... ... ... ...

使用者檔案:

使用者檔案 Adventure Fantasy Tragedy Social commentary
User_001 ??? ??? ??? ???
用 Python 建立推薦引擎

擷取使用者資料

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    ...
用 Python 建立推薦引擎

建立使用者檔案

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, ...]
用 Python 建立推薦引擎

為使用者找推薦

# 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"])
用 Python 建立推薦引擎

取得最高分推薦

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
...                                     ...
用 Python 建立推薦引擎

一起來練習吧!

用 Python 建立推薦引擎

Preparing Video For Download...