簡體   English   中英

如何意外地訓練測試拆分和交叉驗證?

[英]How to train-test split and cross-validate in surprise?

我在下面編寫了以下代碼,該代碼有效:

from surprise.model_selection import cross_validate

cross_validate(algo,dataset,measures=['RMSE', 'MAE'],cv=5, verbose=False, n_jobs=-1)

但是,當我這樣做時:(注意訓練集是在 cross_validate 中傳遞的,而不是整個數據集)

from surprise.model_selection import train_test_split
trainset, testset = train_test_split(dataset, test_size=test_size)
cross_validate(algo, trainset, measures=['RMSE', 'MAE'],cv=5, verbose=False, n_jobs=-1)

它給出了以下錯誤:

AttributeError: 'Trainset' object has no attribute 'raw_ratings'

我查了一下, Surprise 文檔說 Trainset 對象與數據集對象不同,這是有道理的。

但是,文檔沒有說明如何將訓練集轉換為數據集。

我的問題是: 1. 是否可以將 Surprise Trainset 轉換為驚喜數據集? 2. 如果不是,訓練測試拆分整個數據集並交叉驗證的正確方法是什么?

  1. 據我了解,交叉驗證將為您執行訓練集/測試集拆分。 所以你的第一行代碼是正確的,將分成5折(cv=5)。 每個折疊都將是對其他 4 個(火車)的測試。

如果您想要一個簡單的訓練/測試集,請參閱文檔中的這個示例

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM