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

Sklearn Fit () VS Transform () vs fit_transform () – В чем разница?

Scikit-Suart имеет библиотеку трансформаторов для предварительной обработки набора данных. Эти трансформаторы очищают, генерируют, уменьшают или расширяют представление о функции набора данных. Эти трансформаторы предоставляют методы fit (), преобразования () и fit_transform (). Метод FIT () идентифицирует и узнает параметры модели из набора учебных данных. Например, стандартное отклонение и среднее для … Sklearn Fit () VS Transform () vs fit_transform () – в чем разница? Читать далее “

Автор оригинала: Girish Rao.

Scikit – Учите Имеет библиотеку трансформаторов для предварительной обработки набора данных. Эти трансформаторы очищают, генерируют, уменьшают или расширяют представление о функции набора данных. Эти трансформаторы предоставляют Fit () , трансформироваться () и fit_transform () методы.

  • Fit () Способ идентифицирует и изучает параметры модели из набора учебных данных. Например, стандартное отклонение и среднее значение для нормализации. Или мин (и максимум) для масштабирования функций до данного диапазона.
  • трансформироваться () Метод применяет параметры, извлеченные из Fit () метод. трансформироваться () Метод преобразует данные обучения и тестовые данные (aka. Невидимые данные)
  • fit_transform () Сначала метод подходит, затем преобразует набор данных в той же реализации. fit_transform () Метод является эффективной реализацией Fit () и трансформироваться () методы. fit_transform () используется только на учебных данных, установленных как «лучшая практика».

Примечание : Все приведенные ниже решения были проверены с использованием Python 3.9.0b5.

Постановка проблемы

В чем разница между Fit () , трансформироваться () и fit_transform () Методы в классах трансформатора Scikit-Learn?

Задний план

Scikit-Suart – это библиотека обучения машины с открытым исходным кодом. Он поддерживает контролируемое и безоговорочное обучение.

Scikit – Учитесь предоставляет отличные инструменты для модели установки, выбора и оценки. Это также обеспечивает множество полезных утилит для предварительной обработки данных и анализа данных. SCIKIT-SULL – это библиотека с открытым исходным кодом с коммерчески используемой лицензией BSD.

Разработчики Scikit-Sulect работают трудно держать афирную форму по библиотеке. Scikit-Suart предоставляет руководство пользователя, много учебных пособий и примеров. Scikit-Suart – это отличный ресурс для Pythonistas, которые хотят осваивать машинное обучение.

Это великолепно!! Но вы не сказали мне ничего о FIT (), Transform () и fit_transform ()

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

  • Очистка
  • Центрирование
  • Импирание
  • Снижение
  • Расширение
  • Поколение

Библиотека Scikit-Learn предоставляет множество классов, называемых трансформаторами для предварительной обработки. Большинство из этих трансформаторов имеют общую API. Общее API обеспечивает простоту и ясность к данной библиотеке. Fit () , трансформироваться () и fit_transform () являются обычными методами API для классов трансформатора. Давайте рассмотрим эти методы по одному.

Хорошо!! Сначала скажи мне о методе FIT ()

В проектах машинного обучения данные часто разделяются на обучение и тестируемые данные. Fit () Метод идентифицирует и изучает параметры модели только из набора тренировок. Например, он идентифицирует и учится стандартное отклонение (и значит), для нормализации. Или Мин (и Макс ) для масштабирования функций до данного диапазона. Fit () Способ лучше всего продемонстрировать, используя его в примере. Давайте будем использовать рецензирующую преобразователь на этапе данных, чтобы показать, как Fit () работает.

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

Этот расчет легко обрабатывается с использованием Стандартный класс класс, класс утилиты из Библиотека трансформатора Scikit-Transformer Отказ

Стандартный планшет (). Fit () узнает Среднее и Стандарт отклонение из данного учебного набора данных. Он хранит эти научные параметры в объекте. Давайте посмотрим, как это работает с примером …

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## Import the StandardScalar module from the sklearn.preprocessing
>>> ## library. The Standard Scalar module attempts to standardize the
>>> ## features. It does this by removing the mean (i.e. centering the
>>> ## data-set around 0). It also scales to unit variance (i.e. 
>>> ## (Standard Deviation is 1.0)
>>> from sklearn.preprocessing import StandardScaler
>>> 
>>> ## trn_ds is a 4x3 matrix. Each column is referred to as a feature.
>>> ## Each element in each row is referred to as an example (or a 
>>> ## sample).
>>> ## trn_ds is referred to as the training data-set. It is used to train the
>>> ## machine learning model
>>> trn_ds = [[0, 4, 8],
...                     [1, 5, 9],
...                     [2, 6, 10],
...                     [3, 7, 11]]
>>> 
>>> ## Initialize a StandardScalar object.
>>> ss = StandardScaler()
>>> 
>>> ## Call the fit() routine to identify and learn Mean and Standard
>>> ## Deviation of the trn_ds.
>>> print(ss.fit(trn_ds))
StandardScaler()
>>> 
>>> ## Mean is a learned value that is stored as the attribute mean_
>>> ## in the ss object.
>>> print(ss.mean_)
[1.5 5.5 9.5]
>>> 
>>> ## Standard Deviation is another learned value that is stored as
>>> ## the attribute var_ in the ss object.
>>> print(ss.var_)
[1.25 1.25 1.25]
>>> 

💡 Примечание : Fit () Способ осматривает только набор данных для изучения (I.E. Экстракт) основные параметры. Для Стандартный планшет Класс, эти параметры являются средним и стандартным отклонением (дисперсия). Fit () Методы других классов трансформатора изучают другие параметры, характерные для тех классов.

Хорошо, получил это !! Теперь, как насчет трансформации ()?

Преобразование тренировки и тестовые данные-наборы представляют собой следующий шаг предварительного обработки. трансформироваться () Метод использует изученные параметры от FIT (), для преобразования наборов данных. Давайте продолжим работу над центрирующим примером, показанным выше. Выученные параметры уже хранятся в Стандартный класс объект. трансформироваться () Способ сначала используется на наборе обучения. трансформироваться () Метод центры, установленные на данных около 0 и масштабирует его, чтобы иметь дисперсию единицы. трансформироваться () Метод также используется на тестовых данных, установленных для центра и масштабирования его так же.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>>
>>> ## Import the StandardScalar module from the sklearn.preprocessing
>>> ## library. This step is the same as in the previous example.
>>> from sklearn.preprocessing import StandardScaler
>>> 
>>> ## We keep the same training data-set for comparison purposes.
>>> trn_ds = [[0, 4, 8],
...                     [1, 5, 9],
...                     [2, 6, 10],
...                     [3, 7, 11]]
>>> 
>>> ## Initialize a StandardScalar object.
>>> ss = StandardScaler()
>>> 
>>> ## Call the fit() routine to identify and learn Mean and Standard
>>> ## Deviation of the trn_ds.
>>> print(ss.fit(trn_ds))
StandardScaler()
>>> 
>>> ## As before, Mean is a learned value that is stored as the
>>> ## attribute mean_ in the ss object.
>>> print(ss.mean_)
[1.5 5.5 9.5]
>>> 
>>> ## Standard Deviation is another learned value that is stored as
>>> ## the attribute var_ in the ss object.
>>> print(ss.var_)
[1.25 1.25 1.25]
>>> 
>>> ## Ok!! So far, so good!!. Next, transform the training data.
>>> print(ss.transform(trn_ds))
[[-1.34164079 -1.34164079 -1.34164079]
 [-0.4472136  -0.4472136  -0.4472136 ]
 [ 0.4472136   0.4472136   0.4472136 ]
 [ 1.34164079  1.34164079  1.34164079]]
>>> 
>>> ## It worked!! The transformed trn_ds data-set is now centered 
>>> ## around 0, i.e has 0 mean. It has also been scaled to have unit
>>> ## variance (i.e. standard deviation).
>>> 
>>> ## Next, let's see how the test data-set is transformed. Note that
>>> ## the mean and std was calculated using *only* the trn_ds data-set
>>> ## So the transform() function will try to center and scale this
>>> ## new unseen data (i.e. tst_ds) using the parameters learned from
>>> ## the trn_ds data-set.
>>> tst_ds = [[30, 34, 38],
...                    [31, 35, 39],
...                    [32, 36, 40],
...                    [33, 37, 41]]
>>> 
>>> print(ss.transform(tst_ds))
[[25.49117494 25.49117494 25.49117494]
 [26.38560213 26.38560213 26.38560213]
 [27.28002933 27.28002933 27.28002933]
 [28.17445652 28.17445652 28.17445652]]
>>>

Подтвердить шаги, выполняемые до сих пор,

  • Позвоните в Fit () метод один раз (только на учебном наборе данных).

    • Fit () Метод узнал базовые параметры из тренировочного набора данных * только *.
  • Позвоните в трансформироваться () Способ дважды (один раз на наборе обучения, один раз в тестовом наборе данных).

    • трансформироваться () Сначала метод преобразован набор тренировок.
    • трансформироваться () Метод также преобразовал тестовый набор данных

Ах! ОК!! Так что делать fit_transform ()?

Разработчики Scikit-Learn всегда думают о способах оптимизации библиотеки. Fit () и трансформироваться () Методы * всегда * применяется на наборе обучения. Так почему бы не предлагать fit_transform () Метод и оптимизировать его, они думали. fit_transform () Оптимизированная версия Fit () и трансформироваться () собрать вместе. fit_transform () это * Только * вызывается для учебного набора данных. Посмотрим, как это работает для наборов данных, используемых в приведенном выше примере. Конечный результат должен быть точно такой же для обоих случаев использования.

$ python
Python 3.9.0b5 (default, Oct 19 2020, 11:11:59) 
>>> 
>>> ## Import the StandardScalar module from the sklearn.preprocessing
>>> ## library. This step is the same as in the previous examples.
>>> from sklearn.preprocessing import StandardScaler
>>>
>>> ## We keep the same training data-set for comparison purposes.
>>> trn_ds = [[0, 4, 8],
...                     [1, 5, 9],
...                     [2, 6, 10],
...                     [3, 7, 11]]
>>> 
>>> ## Test data-set is the same as before too.
>>> tst_ds = [[30, 34, 38],
...                    [31, 35, 39],
...                    [32, 36, 40],
...                    [33, 37, 41]]
>>> 
>>> ## Initialize a StandardScalar object.
>>> ss = StandardScaler()
>>> 
>>> ## Call the fit_transform() routine on the training data-set.
>>> ## - The method first identifies and learns Mean and Standard
>>> ##   Deviation of the trn_ds.
>>> ## - Next it Centers and Scales the training data.
>>> ## All this is done in one optimized step, by using the
>>> ## fit_transform() method.
>>> print(ss.fit_transform(trn_ds))
[[-1.34164079 -1.34164079 -1.34164079]
 [-0.4472136  -0.4472136  -0.4472136 ]
 [ 0.4472136   0.4472136   0.4472136 ]
 [ 1.34164079  1.34164079  1.34164079]]
>>> 
>>> ## As before, Mean is a learned value that is stored as the
>>> ## attribute mean_ in the ss object.
>>> print(ss.mean_)
[1.5 5.5 9.5]
>>> 
>>> ## Standard Deviation is another learned value that is stored as
>>> ## the attribute var_ in the ss object.
>>> print(ss.var_)
[1.25 1.25 1.25]
>>> 
>>> ## Ok!! So far, so good!!. Everything looks to be the same.
>>> ## The transformed trn_ds data-set continues to be centered 
>>> ## around 0, i.e has 0 mean. It has also been scaled to have unit
>>> ## variance (i.e. standard deviation).
>>> 
>>> ## Next, lets see how the test data-set is transformed. The result
>>> ## should be the same as in the previous example.
>>> print(ss.transform(tst_ds))
[[25.49117494 25.49117494 25.49117494]
 [26.38560213 26.38560213 26.38560213]
 [27.28002933 27.28002933 27.28002933]
 [28.17445652 28.17445652 28.17445652]]
>>> 
>>> ## Perfect!! So there!! fit_transform() is fit() and transform() 
>>> ## steps put together and optimized into one function. A step saved
>>> ## is valuable time earned!!

Подтвердить шаги, выполняемые в этом разделе,

  • Позвоните в fit_transform () метод один раз (только на учебном наборе данных).

    • fit_transform () Метод узнал базовые параметры из тренировочного набора данных * только *.
    • Далее он преобразовал только обучение Data-Set * только *. Это все сделано в одном звонке, на один шаг !!
  • Позвоните в трансформироваться () Метод на тестовом наборе данных * только *.

    • Обратите внимание, как 3 отдельные вызовы (то есть Fit () , Transform (на учебном наборе данных) , преобразование (на тестовом наборе данных) ) было сокращено до 2 вызовов (то есть fit_transform (на наборе тренировок) , Преобразование (на тестовом наборе данных) ).

Заключение

Scikit – Учите Сообщество довольно активно оптимизирует библиотеку. Они продолжают улучшать и обновлять библиотеку. Как мы видели выше, три отдельных шага предварительной обработки теперь сделаны в два шага !! Это экономит время и время драгоценно. Время – деньги!!

Вот расставающая мысль !! Как кодерам, мы проводим много времени на исследования и кодирование. Легко забыть питать наше тело * и * душу. Игнорируя тело * и * душа приведет к всевозможным психическим и физическим заболеваниям. Женщины болезни могут привести нас к поиску медицинской помощи. Это серьезная потеря времени * и * деньги. Таким образом, инвестируйте в себя, едите здоровую и принять частые перерывы до растяжения или прогулки. В конце концов, в чем все эти деньги, если не может наслаждаться этим !!

Финктерская академия

Этот блог был доставлен вам Гириша Рао , студент Финктерская академия Отказ Вы можете найти его Профиль намного здесь Отказ

Справка

Все исследования для этой статьи в блоге было сделано с использованием Python Documents , Поисковая система Google и общая база знаний Финктерская академия , Scikit – Учите и Переполнение стека Общины.