如何训练测试拆分和交叉验证?

问题描述 投票:0回答:1
我在下面写了下面的代码,它起作用了:

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 documentation说Trainset对象与数据集对象不同,这很有意义。

但是,文档没有说明如何将训练集转换为数据集。

我的问题是:1.是否可以将Surprise Trainset转换为Surprise Dataset?2.如果不是,那么对整个数据集进行训练测试并交叉验证的正确方法是什么?

python dataset cross-validation
1个回答
0
投票
    据我了解,交叉验证将为您执行训练集/测试集拆分。因此,您的第一行代码是正确的,并将分成5折(cv = 5)。每个折叠将是对其他4个(训练)的测试。
  • 如果需要简单的训练/测试套件,请参阅this example from the docs
  • © www.soinside.com 2019 - 2024. All rights reserved.