В этой статье вы узнаете об основных различиях между методами scikit-learn fit и fit_transform и о том, когда их использовать. Кроме того, будет объяснено использование метода прогнозирования.

Как энтузиасту науки о данных, вам, должно быть, в какой-то момент было трудно понять разницу между методами scikit-learn fit и fit-transform. Если да, то эта статья рассеет все ваши сомнения. Прежде чем перейти непосредственно к теме, давайте сначала изучим некоторые основные термины.

Преобразователи и оценщики

Transformer относится к объекту, имеющему методы fit и fit_transform. Эти два метода известны тем, что используются для очистки, уменьшения, расширения или создания функций в данных. Некоторые примеры преобразователей включают в себя scikit-learn OneHotEncoder, MinMaxScaler, SimpleImputer и т. д.

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

Использование методов fit, fit_transform и прогнозирования

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

  1. Тип рассматриваемого объекта (преобразователь или оценщик)
  2. Тип рассматриваемых данных (обучающие данные или тестовые/новые данные)

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

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

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

Суммируя…

Метод прогнозирования обычно не используется для обучающих данных, поскольку на нем обучается оценщик. Но иногда, если вы хотите визуально увидеть фактические значения по сравнению с прогнозируемыми значениями, сопоставив фактические и прогнозируемые значения вместе, вам нужно будет использовать метод прогнозирования для обучающих данных.

Почему бы не использовать метод подгонки при тестировании или новых данных?

Давайте разберемся в этом на одном примере. В случае преобразователя scikit-learn SimpleImputer метод подгонки изучает значение вменения из обучающих данных и использует его для преобразования обучающих данных. Теперь в идеале мы должны использовать одно и то же значение вменения, чтобы заполнить недостающие значения в тестировании или новых данных.

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

Работа с методами подгонки, преобразования, подгонки и прогнозирования с конвейерами scikit-learn

Существует два типа конвейеров scikit-learn:

  1. Конвейер, который заканчивается оценщиком (например, классификатором или регрессором)
  2. Трубопровод, который заканчивается трансформатором

Тип конвейера определяет, какие методы вы можете с ним использовать и что эти методы делают.

Если конвейер заканчивается оценщиком, вы можете использовать методы подгонки и прогнозирования:

  1. pipe_object.fit(): все шаги перед последним запускают метод fit_transform, а последний шаг запускает метод fit.
  2. pipe_object.predict(): все шаги перед последним запускают метод преобразования, а последний шаг запускает метод прогнозирования.

Если конвейер заканчивается преобразователем, вы можете использовать методы transform и fit_transform:

  1. pipe_object.transform(): все шаги запускают метод преобразования.
  2. pipe_object.fit_transform(): все шаги запускают метод fit_transform

Заключение

В этой статье я попытался простым языком объяснить использование простых методов scikit-learn, таких как fit, fit_transform и прогнозирование. Надеюсь, вам понравилась статья, и все ваши сомнения рассеялись. Если у вас есть какие-либо отзывы, пожалуйста, дайте мне знать.

Рекомендуемые видео для более быстрого понимания:

(1785) В чем разница между «приспособить и преобразовать? - YouTube"

(1785) Использовать «fit_transform для обучающих данных, но преобразовать (только) для тестирования/новых данных — YouTube»

(1785) Используйте правильные методы для каждого типа пайплайна — YouTube