Как неожиданно тренировать сплит-тест и перекрестную проверку? - PullRequest
0 голосов
/ 05 мая 2020

Я написал следующий код, который работает:

from surprise.model_selection import cross_validate

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

Однако, когда я это сделаю: (обратите внимание, что trainset передается здесь в 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'

Я просмотрел его, и Сюрприз документация говорит, что объекты Trainset не то же самое, что объекты набора данных, что имеет смысл.

Однако в документации не сказано, как преобразовать набор поездов в набор данных.

Мой вопрос: 1. Можно ли преобразовать набор поездов-сюрпризов в набор данных-сюрприз? 2. Если нет, то как правильно провести тренировочный тест, разделить весь набор данных и проверить перекрестную проверку?

1 Ответ

0 голосов
/ 09 мая 2020
Насколько я понимаю, перекрестная проверка выполнит разделение наборов поездов / наборов тестов за вас. Итак, ваша первая строка кода верна и будет разделена на 5 частей (cv = 5). Каждая складка будет проверкой для остальных 4 (шлейфа).

Если вам нужен простой набор для обучения / тестирования, см. этот пример из документации .

...