介紹
在這個實戰(zhàn)項目中,我們將使用 PyTorch 構(gòu)建一個簡單的電影推薦系統(tǒng)。推薦系統(tǒng)是數(shù)據(jù)科學(xué)和機器學(xué)習(xí)領(lǐng)域中的重要應(yīng)用之一,它通過分析用戶的歷史行為和偏好,為用戶推薦可能感興趣的物品。我們將使用協(xié)同過濾算法,其中包含基于用戶的協(xié)同過濾和基于物品的協(xié)同過濾。
步驟 1:準(zhǔn)備數(shù)據(jù)集
我們將使用 MovieLens 數(shù)據(jù)集,該數(shù)據(jù)集包含用戶對電影的評分信息。
import pandas as pd# 下載 MovieLens 數(shù)據(jù)集url = "https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv"df = pd.read_csv(url)
步驟 2:導(dǎo)入必要的庫
import torchimport torch.nn as nnimport torch.optim as optimimport torch.nn.functional as Ffrom torch.utils.data import Dataset, DataLoader
步驟 3:數(shù)據(jù)預(yù)處理
from sklearn.model_selection import train_test_split# 劃分訓(xùn)練集和測試集train_data, test_data = train_test_split(df, test_size=0.2, random_state=42)
步驟 4:創(chuàng)建數(shù)據(jù)加載器
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:創(chuàng)建推薦系統(tǒng)模型
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:訓(xùn)練推薦系統(tǒng)模型
# 初始化模型和優(yōu)化器model = RecommenderModel(num_users, num_items, embedding_dim)optimizer = optim.Adam(model.parameters(), lr=0.001)criterion = nn.MSELoss()# 訓(xùn)練模型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) # 反向傳播和優(yōu)化 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'] # 預(yù)測評分 prediction = model(user, item) # 計算評估指標(biāo) # ...
通過以上步驟,我們完成了一個簡單的電影推薦系統(tǒng)的開發(fā)。希望這個教程對你深入理解 PyTorch 和推薦系統(tǒng)有所幫助。
版權(quán)聲明:本文內(nèi)容由互聯(lián)網(wǎng)用戶自發(fā)貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如發(fā)現(xiàn)本站有涉嫌抄襲侵權(quán)/違法違規(guī)的內(nèi)容, 請發(fā)送郵件至 舉報,一經(jīng)查實,本站將立刻刪除。