Как правильно разделить выборку на обучающую, валидационную и тестовую в Python: полезные советы по отбору данных
Как разделить выборку на обучающую, валидационную и тестовую в Python
Для разделения выборки на обучающую, валидационную и тестовую части в Python можно воспользоваться функцией train_test_split
из библиотеки sklearn.model_selection
. Вот пример использования:
from sklearn.model_selection import train_test_split
# Разделение выборки на обучающую, валидационную и тестовую части
X_train_val, X_test, y_train_val, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
X_train, X_val, y_train, y_val = train_test_split(X_train_val, y_train_val, test_size=0.25, random_state=42)
В данном примере сначала вызывается функция train_test_split
с параметром test_size=0.2
, что означает, что 20% данных будут отложены для тестовой выборки. Затем полученная выборка разделяется на обучающую и валидационную следующим вызовом train_test_split
с параметром test_size=0.25
, что означает, что 25% данных будут использованы для валидации, а остальные 75% - для обучения модели.
Детальный ответ
Как разделить выборку на обучающую, валидационную и тестовую в Python
При обучении моделей машинного обучения, важно правильно разделить доступные данные на обучающую, валидационную и тестовую выборки. В этой статье мы рассмотрим, как выполнить такое разделение с использованием языка программирования Python.
1. Импорт необходимых библиотек
import numpy as np
from sklearn.model_selection import train_test_split
2. Загрузка данных
Прежде чем разделить выборку, нам необходимо загрузить данные. Предположим, что у нас есть массив "X" с признаками и массив "y" с соответствующими целевыми значениями. Мы будем использовать функцию train_test_split из библиотеки scikit-learn для разделения данных.
X = np.array([[1, 2], [3, 4], [5, 6], [7, 8]])
y = np.array([0, 1, 0, 1])
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
3. Разделение на обучающую и тестовую выборки
В приведенном выше коде мы используем функцию train_test_split, чтобы разделить данные на обучающую и тестовую выборки. Параметр test_size указывает долю данных, которая будет использоваться для тестирования модели. В примере мы указали test_size=0.2, что означает, что 20% данных будет отложено для тестирования.
Результатом данной операции являются четыре массива: X_train, X_test, y_train и y_test. Массивы X_train и y_train содержат данные, которые будут использованы для обучения модели, а X_test и y_test содержат данные, которые будут использоваться для тестирования модели.
4. Разделение на обучающую, валидационную и тестовую выборки
Иногда помимо обучающей и тестовой выборки требуется создать валидационную выборку для тонкой настройки параметров модели и оценки ее производительности. Для этого мы можем повторно применить функцию train_test_split:
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=42)
Мы указываем новый параметр test_size, чтобы определить долю данных, которые будут отложены для валидации. В примере мы указали test_size=0.25, что означает, что 25% данных обучающей выборки будет использоваться для валидации.
Теперь у нас есть три набора данных: обучающая выборка (X_train, y_train), валидационная выборка (X_val, y_val) и тестовая выборка (X_test, y_test).
5. Заключение
В данной статье мы рассмотрели, как разделить выборку на обучающую, валидационную и тестовую в Python. Мы использовали функцию train_test_split из библиотеки scikit-learn для выполнения этой задачи. Разделение выборки является важным шагом при обучении моделей машинного обучения, поэтому важно правильно определить доли данных для обучения, валидации и тестирования.