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

时间:2020-05-05 08:47:35

标签: python dataset cross-validation

我在下面写了下面的代码,

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.如果不是,那么对整个数据集进行训练测试并交叉验证的正确方法是什么?

1 个答案:

答案 0 :(得分:0)

  1. 据我了解,交叉验证将为您执行训练集/测试集拆分。因此,您的第一行代码是正确的,并将分成5折(cv = 5)。每个折叠将是对其他4个(训练)的测试。

如果您想要一个简单的训练/测试集,请参阅this example from the docs