Как разделить рейтинговые данные на обучающие и тестовые наборы по идентификатору пользователя в python, чтобы все пользователи были в обучающих и тестовых наборах? - PullRequest
0 голосов
/ 12 мая 2019

Я пытаюсь разделить рейтинговые данные (содержащие ИД пользователя, предметы, рейтинг, время обзора) на наборы поездов / тестов таким образом, чтобы для каждого пользователя 80% его отзывов были в наборе поездов, а оставшиеся 20% в тестовый набор. Как я могу разделить данные на пользователя?

Я запускаю код в Python 3.7. Сначала я пытался использовать train_test_split () с аргументом stratify из модуля sklearn, но он выдает следующую ошибку: «Наименее заполненный класс в y имеет только 1 член, что слишком мало. Минимальное количество групп для любого класса не может быть меньше чем 2. " Более того, я попытался использовать трюк ranks / count> 0.8 из другого подобного отзыва, но он не делает то, что должен в моем случае.

# option1
train_data, test_data = train_test_split(rating_data, test_size=0.2, stratify=rating_data.userID)

Я ожидаю, что код будет проливать данные таким образом, что пользователь с 1 отзывом будет только в поезде, но рецензент с 3 отзывами (3 * 0,8 = 2,4) его 2 отзыва будет в поезде набор и один обзор в тестовом наборе. Цель состоит в том, чтобы все пользователи, по возможности, находились как в поездах, так и в тестовых наборах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...