推荐算法python代码
时间: 2023-06-22 20:44:49 浏览: 77
以下是一个基于协同过滤的推荐算法的Python代码示例:
```python
import numpy as np
# 创建一个用户-物品矩阵
# 行表示用户,列表示物品,数值表示用户对物品的评分
ratings = np.array([
[5, 3, 0, 1, 4],
[0, 2, 4, 5, 1],
[1, 0, 5, 2, 3],
[4, 0, 3, 0, 2],
[2, 4, 1, 3, 5],
])
# 计算物品相似度
item_similarities = np.corrcoef(ratings.T)
# 预测用户对物品的评分
def predict_rating(ratings, item_similarities, user_id, item_id):
# 找到用户已评分的物品
rated_items = np.where(ratings[user_id] > 0)[0]
# 根据物品相似度,计算出所有物品与待预测物品的相似度
similarities = item_similarities[item_id, rated_items]
# 找到与待预测物品最相似的k个物品
k = 3
top_k_similarities = np.sort(similarities)[-k:]
top_k_indices = np.argsort(similarities)[-k:]
# 根据这k个物品的评分,预测用户对待预测物品的评分
ratings_k = ratings[user_id, rated_items[top_k_indices]]
prediction = np.dot(top_k_similarities, ratings_k) / np.sum(top_k_similarities)
return prediction
# 预测用户1对物品4的评分
prediction = predict_rating(ratings, item_similarities, 1, 3)
print(prediction)
```
在这个示例中,我们首先创建了一个用户-物品矩阵,然后计算出了物品之间的相似度矩阵。接着,我们定义了一个函数`predict_rating`,用于预测用户对某个物品的评分。该函数根据用户已评分的物品、物品相似度和待预测物品的编号,找到与待预测物品最相似的k个物品,然后根据这k个物品的评分,预测用户对待预测物品的评分。最后,我们用用户1和物品4作为参数调用`predict_rating`函数,得到了用户1对物品4的预测评分。
阅读全文