协同过滤python代码
时间: 2024-09-04 13:01:40 浏览: 39
协同过滤是一种常用的推荐系统算法,它基于用户的行为数据,通过分析用户之间的相似度来进行个性化推荐。在Python中,可以使用`Surprise`库来实现协同过滤。下面是一个简单的基于用户的协同过滤示例:
```python
from surprise import Dataset
from surprise import Reader
from surprise import KNNBasic
# 初始化 Surprise 阅读器
reader = Reader(rating_scale=(1, 5)) # 评分范围从1到5
# 加载数据集(通常来自CSV文件)
data = Dataset.load_from_file('ratings.csv', reader=reader)
# 创建 KNNBasic 模型
algo = KNNBasic()
# 训练模型
trainset = data.build_full_trainset()
algo.fit(trainset)
# 获取用户ID,这里假设用户ID为0
test_user_id = 0
# 找到与目标用户最相似的邻居
n_neighbors = 10
sim_options = {'name': 'cosine', 'min_support': 5} # 使用余弦相似度,最小支持次数
algo_similarities = algo.compute_similarities(test_user_id, sim_options=sim_options)
# 推荐那些邻居喜欢但目标用户未评价过的物品
for i in range(n_neighbors):
similar_user_id = list(algo_similarities[test_user_id])[i]
similar_ratings = trainset.ur[trainset.to_inner_iid(similar_user_id)]
for item_id, rating in similar_ratings.items():
if not test_user_id in trainset.to_raw_iid(item_id): # 确保用户没给过这个物品打分
print(f"推荐给用户 {test_user_id} 的相似用户 {similar_user_id} 对物品 {item_id} 的评分:{rating}")
阅读全文