Рубрики
Без рубрики

Как разделить данные на наборы обучения и тестирования в Python, используя Sklearn?

В машинном обучении это обычная практика, чтобы разделить данные на два разных набора. Эти два набора являются тренировочным набором и набор тестирования. Как имя

Автор оригинала: Pankaj Kumar.

Как разделить данные на наборы обучения и тестирования в Python, используя Sklearn?

В машинном обучении это обычная практика, чтобы разделить данные на два разных набора. Эти два набора являются Обучение набор и Набор тестирования Отказ Как показывает имя, набор тренировок используется для обучения модели, а набор тестирования используется для тестирования точности модели.

В этом руководстве мы будем:

  • Во-первых, узнать важность разделения наборов данных
  • Затем посмотрите, как разделить данные на два набора в Python

Почему нам нужно разделить данные на наборы обучения и тестирования?

Во время обучения модели обучения машины мы пытаемся найти шаблон, который лучше всего представляет все точки данных с минимальной ошибкой. При этом появляются две распространенные ошибки. Это переоборудование и недостаточно.

Недооцененный

Подзадание – это когда модель даже не может представлять точки данных в тренировочном наборе данных. В случае недостаточной установки вы получите низкую точность даже при тестировании на наборе данных для обучения.

Подзадание обычно означает, что ваша модель слишком проста для захвата сложностей набора данных.

Переоборудование

Преодоление – это случай, когда ваша модель представляет собой набор данных слишком точно. Это означает, что ваша модель слишком близко подходит. В случае изложенного, ваша модель не сможет хорошо работать на новых невидимых данных. Переоснащение обычно является признаком модели слишком сложной модели.

Как чрезмерные, так и недоступны нежелательно.

Должны ли мы проверить на тренировках?

В идеале вы не должны тестировать данные о тренировках. Ваша модель может быть преодолена набор тренировок и, следовательно, потерпит неудачу по новым данным.

Хорошая точность в тренировочном наборе данных не может гарантировать успех вашей модели на невидимые данные.

Вот почему рекомендуется сохранять данные тренировок отдельно от данных тестирования.

Основная идея состоит в том, чтобы использовать тестирование, установленные как невидимые данные.

После тренировки ваших данных на наборе обучения вы должны проверить вашу модель на наборе тестирования.

Если ваша модель хорошо выполняется на наборе тестирования, вы можете быть уверены в вашей модели.

Как разделить обучение и тестирование наборов данных в Python?

Наиболее распространенное соотношение раскола является 80:20.

То есть 80% набора данных попадает в учебный набор, и 20% набора данных попадает в набор тестирования.

Перед разделением данных убедитесь, что набор данных достаточно большой. Train/Test Split работает хорошо с большими наборами набора данных.

Давайте приступим наши руки с некоторым кодом.

1. Импортируйте весь набор данных

Мы используем Калифорнийский корпус набор данных Для всего учебника.

Давайте начнем с импорта данных в DataFrame с использованием Pandas.

Вы можете установить Pandas с помощью команды PIP:

pip install pandas

Импортируйте набор данных в DataFrame PandaS, используя:

import pandas as pd
housing = pd.read_csv("/sample_data/california_housing.csv")
housing.head()
Жилье DataFrame 1.

Давайте относимся к столбцу Median_income в качестве вывода (Y).

y= housing.median_income

Одновременно нам придется отбросить столбец из набора данных для формирования входного вектора.

x=housing.drop('median_income',axis=1)

Вы можете использовать метод .head () в пандах, чтобы увидеть, как выглядит вход и выход.

x.head()
Вход
y.head()
Вывод Y.

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

2. Разделите данные, используя Sklearn

Разделить данные, которые мы будем использовать rain_test_split от Sklearn.

urs_test_split случайно распределяет ваши данные в обучение и набор тестирования в соответствии с предоставленным соотношением.

Давайте посмотрим, как это сделано в Python.

x_train,x_test,y_train,y_test=train_test_split(x,y,test_size=0.2)

Здесь мы используем соотношение раскола 80:20. Набор данных тестирования 20% представлен 0,2 в конце.

Для сравнения формы различных наборов тестирования и обучения используйте следующий кусок кода:

print("shape of original dataset :", housing.shape)
print("shape of input - training set", x_train.shape)
print("shape of output - training set", y_train.shape)
print("shape of input - testing set", x_test.shape)
print("shape of output - testing set", y_test.shape)

Это дает следующий вывод.

Форма

Полный код

Полный код для этого расщепленного обучения и тестирования данных выглядит следующим образом:

import pandas as pd
housing = pd.read_csv("/sample_data/california_housing.csv")
print(housing.head())

#output
y= housing.median_income

#input
x=housing.drop('median_income',axis=1)

#splitting
x_train,x_teinst,y_train,y_test=train_test_split(x,y,test_size=0.2)

#printing shapes of testing and training sets :
print("shape of original dataset :", housing.shape)
print("shape of input - training set", x_train.shape)
print("shape of output - training set", y_train.shape)
print("shape of input - testing set", x_test.shape)
print("shape of output - testing set", y_test.shape)

Заключение

В этом руководстве мы узнали о важности разделения данных в обучение и тестирование наборов. Кроме того, мы импортировали набор данных в DataFrame PandaS и затем используете Sklearn разделить данные на наборы обучения и тестирования.