2. 编写基于用户相似度的协同过滤推荐算法,并为代码添加注释。
时间: 2024-10-10 08:13:03 浏览: 44
编写基于用户相似度的协同过滤推荐算法,主要是通过分析用户的历史行为数据,找出兴趣爱好相近的用户群体,然后将他们喜欢的东西推荐给目标用户。以下是简单的Python代码示例,使用余弦相似度作为相似度计算方法:
```python
import numpy as np
# 假设我们有一个用户行为矩阵,每一行代表一个用户,每一列代表一个物品,值表示评分
user_ratings = np.array([
[5, 4, 0, 0], # 用户A对电影的评分
[0, 3, 4, 0], # 用户B
[4, 0, 5, 1], # 用户C
[0, 0, 0, 5] # 用户D
])
# 计算用户间的相似度矩阵(这里使用余弦相似度)
def cosine_similarity(matrix):
norm_matrix = np.linalg.norm(matrix, axis=1)[:, np.newaxis]
return matrix.dot(norm_matrix.T) / (norm_matrix ** 2).sum()
user_similarities = cosine_similarity(user_ratings)
# 找到最相似的k个用户
def find_neighbors(target_user_id, k=5):
similar_users = np.argsort(user_similarities[target_user_id])[:-k-1:-1]
return similar_users
# 推荐物品
def recommend_items(user_id, top_k=3):
similar_users_ids = find_neighbors(user_id)
common_items = user_ratings[similar_users_ids].sum(axis=0)
recommendations = common_items / np.sum(np.isnan(common_items)) # 简化处理缺失评分
top_recommendations = recommendations.argsort()[-top_k:][::-1]
return top_recommendations
# 使用示例
target_user_id = 0
recommended_movies = recommend_items(target_user_id)
```
阅读全文