pyhton实现简单推荐代码
时间: 2023-09-11 19:01:33 浏览: 108
Python实现简单推荐代码可以采用基于用户的协同过滤算法。具体步骤如下:
1. 数据准备:准备用户和物品的评分数据集,存储为用户-物品-评分的矩阵形式。
2. 计算相似度:计算用户之间的相似度。可以采用余弦相似度或皮尔逊相关系数等。计算用户相似度矩阵。
3. 选择邻居:根据用户相似度矩阵,选择与目标用户相似度最高的K个用户作为邻居。
4. 推荐物品:对于邻居用户未评分但目标用户未评分的物品,根据邻居用户的评分,计算目标用户对这些物品的兴趣程度。可以用加权求和或加权平均等方式。
5. 排序推荐:根据目标用户对物品的兴趣程度,对推荐物品进行排序,推荐给目标用户。
代码示例:
```python
import numpy as np
# 创建用户-物品评分矩阵
ratings = np.array([[5, 3, 4, 0, 0],
[1, 0, 0, 5, 2],
[4, 0, 0, 4, 1],
[0, 1, 5, 4, 3],
[2, 2, 0, 1, 0],
[0, 0, 5, 2, 5]])
# 计算用户相似度矩阵(余弦相似度)
def cosine_similarity(ratings):
similarity = np.dot(ratings, ratings.T)
norm = np.linalg.norm(ratings, axis=1)
similarity /= np.outer(norm, norm)
return similarity
# 选择邻居
def select_neighbors(similarity, k):
neighbors = []
for i in range(similarity.shape[0]):
top_k_neighbors = np.argsort(similarity[i])[::-1][:k]
neighbors.append(top_k_neighbors)
return neighbors
# 推荐物品
def recommend(neighbors, ratings, user_id):
target_ratings = ratings[user_id]
neighbor_ratings = ratings[neighbors[user_id]]
unrated_items = np.where(target_ratings == 0)[0]
predictions = np.mean(neighbor_ratings[:, unrated_items], axis=0)
sorted_items = np.argsort(predictions)[::-1]
return sorted_items
# 测试
similarity = cosine_similarity(ratings)
neighbors = select_neighbors(similarity, k=2)
recommended_items = recommend(neighbors, ratings, user_id=0)
print("User 0的推荐物品:", recommended_items)
```
这段示例代码中,ratings为用户-物品评分矩阵,cosine_similarity函数计算用户相似度矩阵,select_neighbors函数选择邻居,recommend函数对目标用户进行推荐。最后,输出User 0的推荐物品。
阅读全文