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

Как использовать sklearn train test split в Python?

[

Разбиение вашего набора данных с помощью функции sklearn train_test_split()

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

В этом учебнике вы узнаете:

  • Почему вам необходимо разделить ваш набор данных при наблюдаемом машинном обучении.
  • Какие подмножества набора данных вам нужны для несмещенной оценки вашей модели.
  • Как использовать функцию train_test_split() для разделения вашего набора данных.
  • Как комбинировать train_test_split() с методами предсказания.

Кроме того, вы получите информацию о связанных инструментах из модуля sklearn.model_selection.

Бесплатный бонус: Нажмите здесь, чтобы получить доступ к бесплатному руководству по NumPy, которое поможет вам найти лучшие учебники, видео и книги для улучшения ваших навыков работы с NumPy.

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

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

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

Предварительные требования для использования train_test_split()

Для того чтобы использовать функцию train_test_split(), вы должны иметь установленную библиотеку scikit-learn. Если у вас ее нет, вы можете установить ее, выполнив команду pip install scikit-learn. После этого вы сможете импортировать функцию с помощью команды from sklearn.model_selection import train_test_split.

Применение train_test_split()

Функция train_test_split() используется для разделения набора данных на обучающую и тестовую выборки. Обычно принято разделять набор данных на обучающую и тестовую выборки в соотношении 70/30 или 80/20. Это означает, что 70% или 80% данных будут использоваться для обучения модели, а оставшиеся 30% или 20% - для тестирования ее предсказательной способности.

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

from sklearn.model_selection import train_test_split
# Разделение признаков и меток
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# X_train - обучающая выборка признаков
# y_train - обучающая выборка меток
# X_test - тестовая выборка признаков
# y_test - тестовая выборка меток

Функция train_test_split() принимает следующие параметры:

  • X - матрица признаков (независимые переменные)
  • y - вектор меток (зависимые переменные)
  • test_size - размер тестовой выборки (в долях или абсолютных значениях)
  • random_state - начальное значение генератора случайных чисел для воспроизводимых результатов

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

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

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

Предположим, у вас есть набор данных, содержащий значения X и соответствующие значения y. Вы хотите обучить модель линейной регрессии на этом наборе данных, используя функцию train_test_split() для разделения данных на обучающую и тестовую выборки.

from sklearn.model_selection import 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(f"Оценка модели: {score}")

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

Предположим, у вас есть набор данных с несколькими признаками и соответствующими значениями целевой переменной. Вы хотите обучить модель регрессии на этом наборе данных, используя функцию train_test_split() для разделения данных на обучающую и тестовую выборки.

from sklearn.model_selection import 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(f"Оценка модели: {score}")

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

Предположим, у вас есть набор данных с несколькими признаками и соответствующими метками классов. Вы хотите обучить модель классификации на этом наборе данных, используя функцию train_test_split() для разделения данных на обучающую и тестовую выборки.

from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
# Разделение данных на обучающую и тестовую выборки
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)
# Оценка модели на тестовой выборке
score = model.score(X_test, y_test)
print(f"Оценка модели: {score}")

Другие возможности проверки

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

Заключение

В этом учебнике вы узнали, как использовать функцию train_test_split() из библиотеки scikit-learn для разделения вашего набора данных на обучающую и тестовую выборки при наблюдаемом машинном обучении. Вы также узнали, как комбинировать train_test_split() с методами предсказания и использовать его для решения различных задач обучения с учителем.