逐步实现 K-nearest neighbors
您刚刚看到如何使用 K-nearest neighbors(KNN)根据「相似人群的智慧」来推断某人可能会如何为某个物品打分。 在本练习中,您将亲自走一遍这一流程,以加深对其工作原理的理解。
为了帮助您上手,鉴于您之前已经多次生成相似度矩阵,这一步我们已为您完成:用户相似度矩阵已包装为 DataFrame 并加载为 user_similarities。
该矩阵以用户为行和列,行列交汇处为相应的相似度分数。
在本练习中,您将使用 user_001 的相似度分数,找到其最近邻居,并基于这些邻居对一部电影的评分,推断如果 user_001 看了这部电影,他们可能会给出的评分。
本练习是课程的一部分
用 Python 构建推荐引擎
练习说明
- 通过在
ordered_similarities中提取排名前 10 的用户,并将其存为nearest_neighbors,找到User_A的 10 个最近邻居的 ID。 - 从
user_ratings_table中提取这些nearest_neighbors用户给出的评分,存为neighbor_ratings。 - 计算这些用户对电影
Apollo 13 (1995)的平均评分,以此推断如果User_A看过这部电影,他们可能会给出的评分。
交互式实操练习
通过完成这段示例代码来试试这个练习。
# Isolate the similarity scores for user_1 and sort
user_similarity_series = user_similarities.loc['user_001']
ordered_similarities = user_similarity_series.sort_values(ascending=False)
# Find the top 10 most similar users
nearest_neighbors = ordered_similarities[1:11].____
# Extract the ratings of the neighbors
neighbor_ratings = user_ratings_table.____(nearest_neighbors)
# Calculate the mean rating given by the users nearest neighbors
print(neighbor_ratings['Apollo 13 (1995)'].____())