python协同过滤算法代码示例
时间: 2024-03-18 16:38:05 浏览: 71
协同过滤是一种常用的推荐算法,它通过分析用户的历史行为和与其他用户的相似度来进行推荐。下面是一个简单的Python代码示例,用于实现基于用户的协同过滤算法:
```python
import numpy as np
# 创建用户-物品评分矩阵
ratings = np.array([
[5, 3, 0, 1],
[4, 0, 4, 4],
[1, 1, 0, 5],
[0, 0, 4, 0],
[2, 2, 1, 0]
])
# 计算用户之间的相似度(使用余弦相似度)
def similarity(user1, user2):
common_items = np.logical_and(user1 != 0, user2 != 0)
if np.sum(common_items) == 0:
return 0
return np.dot(user1, user2) / (np.linalg.norm(user1) * np.linalg.norm(user2))
# 预测用户对物品的评分
def predict_rating(user_id, item_id):
similarities = []
ratings_sum = 0
similarities_sum = 0
for i in range(len(ratings)):
if i != user_id and ratings[i][item_id] != 0:
sim = similarity(ratings[user_id], ratings[i])
similarities.append(sim)
ratings_sum += sim * ratings[i][item_id]
similarities_sum += sim
if similarities_sum == 0:
return 0
return ratings_sum / similarities_sum
# 示例:预测用户3对物品2的评分
user_id = 3
item_id = 2
predicted_rating = predict_rating(user_id, item_id)
print(f"用户{user_id}对物品{item_id}的预测评分为:{predicted_rating}")
```
这段代码中,我们首先创建了一个用户-物品评分矩阵,其中每行表示一个用户对物品的评分。然后定义了一个计算用户之间相似度的函数`similarity`,使用余弦相似度来度量相似度。接着,我们定义了一个预测用户对物品评分的函数`predict_rating`,该函数根据用户与其他用户的相似度和其他用户对该物品的评分来进行预测。最后,我们给出了一个示例,预测了用户3对物品2的评分。
阅读全文