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

Для начала давайте напомним себе о рабочем процессе Data Science:

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

ПРИМЕЧАНИЕ. Еще одним предварительным условием для моделирования является знание того, собираетесь ли вы моделировать с помощью подхода обучения с учителем или обучения без учителя.

  • Контролируемое обучение: ваши данные содержат наблюдения для прогнозируемой вами целевой переменной.
  • Обучение без учителя: ваши данные не содержат наблюдений для цели, которую вы прогнозируете.

ПРОЦЕСС, ОПИСАННЫЙ НИЖЕ, БУДЕТ ПРОХОДИТЬ С ПОДХОДОМ ОБУЧЕНИЯ С КОНТРОЛЕМ

Шаг 1. Определите свои X и Y

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

  • Переменная X (обычно обозначается с заглавной буквы X) — это основная часть ваших данных, содержащая все функции (столбцы), которые вы рассмотрели в EDA, и это то, что вы решили для предоставления вашей модели в качестве функций для обучения модели прогнозированию целевой переменной. Мы установим это равным X и отбросим целевую переменную, которую мы планируем прогнозировать.
X = model_df.drop('launch_speed', axis=1)
  • Переменная y (обычно обозначается как y в нижнем регистре) — это «целевая» переменная или, другими словами, то, что вы планируете прогнозировать с помощью модели.
y = model_df['launch_speed'].values

Шаг 2. Обучение/тестирование/разделение

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

Во-первых, убедитесь, что импортированы соответствующие библиотеки:

from sklearn.model_selection import train_test_split

Во-вторых, настройте поезд, протестируйте и разделите. Мы всегда пишем это в следующем порядке:

ПРИМЕЧАНИЕ. При создании модели для задачи классификации просмотрите параметр stratify в рамках обучения, тестирования и разделения. Кроме того, если вы хотите, чтобы поезд, тест и разделение были согласованными при каждом запуске, установите параметр random_state.

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

Шаг 3. Масштабируйте данные

ПРИМЕЧАНИЕ. Это может быть необязательным для модели, которую вы выбираете для запуска. Убедитесь, что вы просмотрели модель, чтобы понять, нужны ли ей масштабированные данные.

Теперь нам нужно привести все наши данные к одному масштабу. Это важно для того, чтобы все функции были взвешены по одной шкале. Если они не масштабируются, то модель, например, может рассматривать, скажем, функцию возраста и функцию заработной платы, и, поскольку число заработной платы будет больше, модель воспримет это как функцию, которая должна иметь более высокий вес или быть более влиятельной. модель.

Для масштабирования наших данных мы используем Standard Scaler от SKLearn.

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

from sklearn.preprocessing import StandardScaler

Во-вторых, назначьте Standard Scaler переменной:

ss = StandardScaler()

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

X_train_sc = ss.fit_transform(X_train)

Наконец, мы берем подгонку, которая была применена к обучающим данным, и преобразуем ее в данные X_test.

X_test_sc = ss.transform(X_test)

ПРИМЕЧАНИЕ. После масштабирования и преобразования данных не забудьте подготовить масштабировщик для использования в будущем. Проверьте мой другой блог под названием Таинственный рассол.

Шаг 4. Создайте экземпляр модели

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

После выбора модели убедитесь, что она импортирована. Я буду использовать регрессор Gradient Boost.

from sklearn.ensemble import GradientBoostingRegressor

Чтобы создать экземпляр, назначьте переменную вашей модели:

gbr = GradientBoostingRegressor()

Шаг 5. Сопоставьте модель

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

gbr.fit(X_train_sc, y_train)

Шаг 6. Оцените свою модель

После подгонки модели вы можете повторно использовать созданную переменную модели, чтобы оценить как пакеты обучающей, так и тестовой модели.

gbr.score(X_train_sc, y_train)
gbr.score(X_test_sc, y_test)

Шаг 7. Просмотрите оценки и при необходимости скорректируйте

Прежде чем оценивать свою модель, убедитесь, что вы понимаете метрику оценки моделей по умолчанию. Это можно найти в документации SKLearn.

Что нужно помнить:

  • Train Score › Test Score: это указывает на то, что прогнозы ваших моделей не соответствуют действительности.
  • Test Score › Train Score: это указывает на то, что прогнозы ваших моделей не соответствуют действительности.

Говорят, что эмпирическое правило заключается в том, чтобы получить оценку ближе к 1, но именно здесь действительно проявляется искусство Data Scientist. Поиск наилучшего результата для вашей модели требует большого количества суждений, и вы захотите обратиться к документации по вашей модели, чтобы подтвердить свое суждение. Чтобы улучшить оценку ваших моделей, вам нужно будет поиграть с методами выбора функций в SKLearn и продолжить разработку функций на данных, которые вы предоставляете модели. Дальнейшее совершенствование набора данных в конечном итоге приведет к улучшению модели оценки.