[英]Why does my cross-validation consistently perform better than train-test split?
[英]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. 如果不是,訓練測試拆分整個數據集並交叉驗證的正確方法是什么?
如果您想要一個簡單的訓練/測試集,請參閱文檔中的這個示例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.