Я искал Google Dataprep в качестве решения ETL для выполнения некоторого базового преобразования данных перед передачей его на платформу машинного обучения.Мне интересно, возможно ли использовать инструменты Dataprep / Dataflow для разделения набора данных на наборы поездов, тестов и проверок.В идеале я хочу сделать стратифицированное разделение на целевом столбце, но для начала я бы согласился на простое равномерное случайное разделение на процент от целого (например, 50% поезд, 30% проверка, 20% тест).
До сих пор я не смог найти ничего о том, возможно ли это даже с помощью Dataprep, поэтому мне интересно, знает ли кто-нибудь окончательно, возможно ли это, и если да, то как это сделать.
РЕДАКТИРОВАТЬ 1
Спасибо @ jakub-janoštík за то, что меня направили в правильном направлении!Я немного изменил ваш ответ и придумал следующее (в форме спора):
case condition: customConditions cases: [false,0] default: rand() as: 'split_condition'
case condition: customConditions cases: [split_condition < 0.6,'train'],[split_condition >= 0.8,'test'] default: 'validation' as: 'dataset_type'
drop col: split_condition action: Drop
Назначая случайные значения на отдельном шаге, я получил гарантированное процентное разделение, которое я искал.Поток в конечном итоге выглядел так:
Изображение: окончательная схема потока с разделением набора данных
РЕДАКТИРОВАТЬ 2
Я просторазобрался, как сделать стратифицированное разбиение, поэтому я решил добавить его на тот случай, если кто-то еще попытается это сделать.Вот грубые шаги:
- Разделите ваш набор данных на основе любых подгрупп населения, на которые вы нацеливаетесь (например, target0, target1)
- Для каждой подгруппы выполните равномерное случайное разделение, описанное выше (например,теперь у вас есть target0-train, target0-test, target0-validation, target1-train и т. д.)
- Для каждого типа набора (т. е. train, test, validation):
- Создать новыйрецепт из одного из наборов
- Отредактируйте рецепт и используйте преобразование Union, чтобы объединить его с другими наборами данных того же типа (например, target0-train union с target1-train).Кнопка объединения находится в центре панели инструментов на странице «Редактировать рецепт».
Надеюсь, это кому-нибудь пригодится!