介绍
在这个实战项目中,我们将使用 PyTorch 构建一个简单的电影推荐系统。推荐系统是数据科学和机器学习领域中的重要应用之一,它通过分析用户的历史行为和偏好,为用户推荐可能感兴趣的物品。我们将使用协同过滤算法,其中包含基于用户的协同过滤和基于物品的协同过滤。
步骤 1:准备数据集
我们将使用 MovieLens 数据集,该数据集包含用户对电影的评分信息。
import pandas as pd# 下载 MovieLens 数据集url = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv"df = pd.read_csv(url)
步骤 2:导入必要的库
import torchimport torch.nn as nnimport torch.optim as optimimport torch.nn.functional as Ffrom torch.utils.data import Dataset, DataLoader
步骤 3:数据预处理
from sklearn.model_selection import train_test_split# 划分训练集和测试集train_data, test_data = train_test_split(df, test_size=0.2, random_state=42)
步骤 4:创建数据加载器
class RecommendationDataset(Dataset): def __init__(self, data): self.data = data def __len__(self): return len(self.data) def __getitem__(self, idx): user = torch.tensor(self.data.iloc[idx]['user'], dtype=torch.long) item = torch.tensor(self.data.iloc[idx]['item'], dtype=torch.long) rating = torch.tensor(self.data.iloc[idx]['rating'], dtype=torch.float) return {'user': user, 'item': item, 'rating': rating}
步骤 5:创建推荐系统模型
class RecommenderModel(nn.Module): def __init__(self, num_users, num_items, embedding_dim): super(RecommenderModel, self).__init__() self.user_embedding = nn.Embedding(num_users, embedding_dim) self.item_embedding = nn.Embedding(num_items, embedding_dim) def forward(self, user, item): user_embedded = self.user_embedding(user) item_embedded = self.item_embedding(item) prediction = F.cosine_similarity(user_embedded, item_embedded, dim=1) return prediction
步骤 6:训练推荐系统模型
# 初始化模型和优化器model = RecommenderModel(num_users, num_items, embedding_dim)optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.MSELoss()# 训练模型num_epochs = 10for epoch in range(num_epochs): for batch in train_dataloader: user, item, rating = batch['user'], batch['item'], batch['rating'] # 前向传播 prediction = model(user, item) loss = criterion(prediction, rating) # 反向传播和优化 optimizer.zero_grad() loss.backward() optimizer.step() print(f'Epoch [{epoch 1}/{num_epochs}], Loss: {loss.item():.4f}')
步骤 7:评估模型性能
# 在测试集上评估模型性能model.eval()with torch.no_grad(): for batch in test_dataloader: user, item, rating = batch['user'], batch['item'], batch['rating'] # 预测评分 prediction = model(user, item) # 计算评估指标 # ...
通过以上步骤,我们完成了一个简单的电影推荐系统的开发。希望这个教程对你深入理解 PyTorch 和推荐系统有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。