Как я мог случайно разбить матрицу данных и соответствующий вектор метки на X_train, X_test, X_val, y_train, y_test, y_val с помощью Sklearn? Насколько я знаю, sklearn.cross_validation.train_test_split
способен только на две, а не на три ...
machine-learning
scikit-learn
Хендрик
источник
источник
train_test_split
вы делаете это за предыдущий сплит 80/20. Таким образом, ваш val составляет 20% от 80%. Разделенные пропорции не очень просты в этом смысле.На SO есть отличный ответ на SO, который использует numpy и pandas.
Команда (см. Ответ для обсуждения):
производит разбивку на 60%, 20%, 20% для наборов обучения, проверки и тестирования.
источник
.6
значение 60% ... но что это.8
значит?np.split
разделится на 60% длины перетасованного массива, а затем на 80% длины (что является дополнительными 20% данных), оставляя, таким образом, оставшиеся 20% данных. Это связано с определением функции. Вы можете проверить / поиграть с:,x = np.arange(10.0)
а затемnp.split(x, [ int(len(x)*0.6), int(len(x)*0.8)])
Чаще всего вы обнаружите, что не разбиваете его один раз, но на первом этапе вы разделите свои данные в обучающем и тестовом наборе. Впоследствии вы будете выполнять поиск параметров, включающий более сложные разбиения, такие как перекрестная проверка, с алгоритмом «разбить по k-сгибу» или «оставить один» (LOO).
источник
Вы можете использовать
train_test_split
дважды. Я думаю, что это наиболее просто.Таким образом,
train
,val
,test
набор будет 60%, 20%, 20% набора данных соответственно.источник
В приведенном выше наилучшем ответе не упоминается, что разделение два раза с использованием
train_test_split
неизменяемых размеров разделов не даст изначально предполагаемый раздел:Тогда часть проверочных и тестовых наборов в x_remain изменится и может быть посчитана как
В этом случае все начальные разделы сохраняются.
источник
Вот другой подход (предполагает равное трехстороннее разделение):
Это может быть сделано более кратким, но я держал это подробным для целей объяснения.
источник
Учитывая
train_frac=0.8
, эта функция создает разделение 80% / 10% / 10%:источник
Добавление к ответу @ hh32 при соблюдении любых заранее определенных пропорций, таких как (75, 15, 10):
источник
Расширение ответа @ hh32 с сохранением соотношений.
Поскольку оставшийся набор данных уменьшается после первого разделения, новые соотношения по отношению к сокращенному набору данных должны быть рассчитаны путем решения уравнения:
источник