【问题标题】:How to train-test split and cross-validate in surprise?如何意外地训练测试拆分和交叉验证?
【发布时间】:2020-05-09 16:00:49
【问题描述】:

我在下面写了以下代码:

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

【问题讨论】:

  • 嗨。编程问题在这里是题外话。有关详细信息,请参阅ai.stackexchange.com/help/on-topic。您可以在 Stack Overflow 或 Data Science SE 上提出此类问题。我会将这个问题迁移到 Stack Overflow。

标签: python dataset cross-validation


【解决方案1】:
  1. 据我了解,交叉验证将为您执行训练集/测试集拆分。所以你的第一行代码是正确的,将分成5折(cv=5)。每个折叠都将是对其他 4 个(火车)的测试。

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

【讨论】:

    猜你喜欢
    • 2020-12-15
    • 2018-12-07
    • 2021-03-04
    • 2021-09-17
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多