Пропустить до содержимого

Как использовать train_test_split в Python?

[

Разделение набора данных с помощью функции train_test_split из библиотеки scikit-learn

Одним из ключевых аспектов обучения с учителем является оценка и проверка модели. При оценке предиктивной производительности модели важно, чтобы процесс был непредвзят. Используя функцию train_test_split из библиотеки машинного обучения scikit-learn, вы можете разделить свой набор данных на подмножества, чтобы минимизировать возможность предвзятости в процессе оценки и проверки.

Важность разделения данных

Обучение с учителем заключается в создании моделей, которые точно отображают заданную входную информацию (независимые переменные или предикторы) на заданный выход (зависимые переменные или ответы).

Допустимые числовые значения, которые измеряют точность, варьируют от области к области. Вы можете найти подробные объяснения в статьях Statistics By Jim, Quora и многих других ресурсах.

Тренировочный, проверочный и тестовый наборы данных

Чтобы получить объективную оценку производительности модели, необходимо разделить набор данных на тренировочный, проверочный и тестовый наборы.

  • Тренировочный набор данных используется для обучения модели.
  • Проверочный набор данных используется для настройки гиперпараметров модели и выбора модели с наилучшей производительностью.
  • Тестовый набор данных используется для окончательной оценки модели и ее производительности на независимых данных.

Определение размеров каждого набора данных зависит от конкретной задачи и доступного объема данных. Обычно используются соотношения, такие как 70% для тренировочного набора, 15% для проверочного набора и 15% для тестового набора.

Подготовка для использования функции train_test_split

Для использования функции train_test_split из библиотеки scikit-learn вам необходимо установить эту библиотеку с помощью команды pip install scikit-learn.

pip install scikit-learn

После установки вы можете импортировать функцию в свой код:

from sklearn.model_selection import train_test_split

Применение функции train_test_split

Функция train_test_split принимает входные данные X и целевую переменную y и разделяет их на тренировочный и тестовый наборы. Вы можете указать размеры каждого набора данных с помощью параметра test_size, который задает долю тестового набора от общего числа данных. Для разделения данных случайным образом используется параметр random_state, который генерирует случайную начальную перестановку данных.

Пример использования функции train_test_split:

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

В этом примере X - данные, y - целевая переменная, test_size=0.2 - размер тестового набора данных равен 20% от общего числа данных, random_state=42 - начальное значение генератора случайных чисел.

Обучение с учителем с использованием train_test_split

Функция train_test_split часто используется в задачах обучения с учителем, таких как линейная регрессия и классификация.

Минимальный пример линейной регрессии

from sklearn.linear_model import LinearRegression
# Разделение данных на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели линейной регрессии
model = LinearRegression()
model.fit(X_train, y_train)
# Оценка производительности модели на тестовом наборе данных
score = model.score(X_test, y_test)
print("R^2 score:", score)

Пример регрессии

from sklearn.linear_model import LinearRegression
# Разделение данных на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели линейной регрессии
model = LinearRegression()
model.fit(X_train, y_train)
# Предсказание на тестовом наборе данных
y_pred = model.predict(X_test)
# Оценка производительности модели на тестовом наборе
score = model.score(X_test, y_test)
print("R^2 score:", score)

Пример классификации

from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# Разделение данных на тренировочный и тестовый наборы
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Создание и обучение модели логистической регрессии
model = LogisticRegression()
model.fit(X_train, y_train)
# Предсказание на тестовом наборе данных
y_pred = model.predict(X_test)
# Оценка производительности модели на тестовом наборе
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

Другие возможности валидации

Библиотека scikit-learn также предоставляет другие функции для валидации моделей, такие как кросс-валидация и разные метрики оценки. Вы можете изучить эти функции в документации scikit-learn.

Заключение

Разделение набора данных на тренировочный, проверочный и тестовый наборы является важным шагом при оценке и проверке моделей в задачах обучения с учителем. Функция train_test_split из библиотеки scikit-learn позволяет с легкостью выполнить это разделение. Помните, что размеры каждого набора данных и другие параметры должны быть выбраны с учетом конкретной задачи и доступных данных.