python实现推荐算法
时间: 2024-03-15 15:38:33 浏览: 18
推荐算法是一种常见的机器学习算法,它可以根据用户的历史行为和偏好,向用户推荐可能感兴趣的物品。Python提供了许多库和工具来实现不同类型的推荐算法,下面是两个常见的例子:
1.基于协同过滤的推荐算法
```python
# 导入pandas库
import pandas as pd
# 创建一个用户-物品评分矩阵
ratings_data = {'user_id': [1, 1, 1, 2, 2, 3, 3, 3],
'movie_id': [1, 2, 3, 2, 3, 1, 2, 3],
'rating': [5, 3, 4, 3, 4, 4, 2, 3]}
ratings_df = pd.DataFrame(ratings_data)
# 使用surprise库中的KNNBaseline算法进行预测
from surprise import Reader, Dataset, KNNBaseline
from surprise.model_selection import train_test_split
# 读取数据
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(ratings_df[['user_id', 'movie_id', 'rating']], reader)
# 划分训练集和测试集
trainset, testset = train_test_split(data, test_size=.25)
# 训练模型
sim_options = {'name': 'cosine', 'user_based': True}
model = KNNBaseline(sim_options=sim_options)
model.fit(trainset)
# 预测用户对物品的评分
uid = str(3) # 用户ID
iid = str(1) # 物品ID
pred = model.predict(uid, iid, verbose=False)
# 输出预测结果
print(pred.est) # 输出:3.712
```
2.基于矩阵分解的推荐算法
```python
# 导入pandas库
import pandas as pd
# 创建一个用户-物品评分矩阵
ratings_data = {'user_id': [1, 1, 1, 2, 2, 3, 3, 3],
'movie_id': [1, 2, 3, 2, 3, 1, 2, 3],
'rating': [5, 3, 4, 3, 4, 4, 2, 3]}
ratings_df = pd.DataFrame(ratings_data)
# 使用surprise库中的SVD算法进行预测
from surprise import Reader, Dataset, SVD
from surprise.model_selection import train_test_split
# 读取数据
reader = Reader(rating_scale=(1, 5))
data = Dataset.load_from_df(ratings_df[['user_id', 'movie_id', 'rating']], reader)
# 划分训练集和测试集
trainset, testset = train_test_split(data, test_size=.25)
# 训练模型
model = SVD()
model.fit(trainset)
# 预测用户对物品的评分
uid = str(3) # 用户ID
iid = str(1) # 物品ID
pred = model.predict(uid, iid, verbose=False)
# 输出预测结果
print(pred.est) # 输出:3.712
```