用户画像推荐

用 Python 构建推荐引擎

Rob O'Callaghan

Director of Data

基于物品的推荐

展示基于相似项进行推荐的图片。

用 Python 构建推荐引擎

用户画像

tfidf_summary_df

书籍 冒险 奇幻 悲剧 社会评论
The Hobbit 1 1 0 0
Macbeth 0 0 1 0
... ... ... ... ...

用户画像:

用户画像 冒险 奇幻 悲剧 社会评论
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 构建推荐引擎

¡Vamos a practicar!

用 Python 构建推荐引擎

Preparing Video For Download...