Это может выглядеть очень простым 2–3-строчным кодом, который мы должны использовать при масштабировании данных и при запуске модели. Но что он делает?

Что ж, некоторые говорят, что самый простой способ — это разориться!! Ведь в каждом проекте используется одна и та же последовательность кодов! Но что, если вы застряли… вы забыли коды… возникают какие-то ошибки, и вы не знаете, как с этим справиться или даже почему они появляются?

Простой способ понять это….. и вы никогда не забудете!

Чтобы начать с этой концепции →

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

Еще одна важная вещь — исследовательский анализ данных или EDA — это самостоятельный шаг. Мы делаем это для лучшего понимания данных. Его вывод может объяснить нам многие скрытые зависимости и отношения. Но вывод никуда не делся. Он не связан ни с каким другим процессом, хотя многое объясняет.

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

Предварительная обработка→ Здесь происходит преобразование данных. Несколько примеров предварительной обработки:

  • Стандартный скаляр — это метод предварительной обработки, при котором данные обрабатываются или (как говорят на языке машинного обучения) функция масштабируется. Что это значит? Простой — среднее значение = 0, а стандартное отклонение = 1. Он стандартизирует данные, используя формулы z-теста = (x — mu)/std_dev.
  • Минмакс Скаляр
  • СПС

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

  • Случайный лес
  • Древо решений
  • Логистическая регрессия
  • Линейная регрессия
  • Адабуст
  • Кластеризация и многое другое.

Сказав и сделав это с таким пониманием, при чем здесь fit() и все эти коды?

Здесь:

Продолжение приведенного выше рисунка, дающее вам обзор подгонки, преобразования и подгонки_трансформации.

(Predict — это простой код с простым объяснением, которое мы изучим в конце.)

Предварительная обработка — использование функций fit(), transform() и fit_transform()

  • fit() — использование этого кода:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()  #created an object of StandardScalar

-----------------------------------------------------------

df1['INCOME'] = scaler.fit(df1[["INCOME"]])  ## called the function of
#fit.

Теперь, что делает эта команда fit()?

В основном он вычисляет различные параметры, такие как среднее значение и стандартное отклонение. Они хранятся в других переменных внутри. Никаких других вычислений здесь не происходит.

  • transform() — Использование кода:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()  #created an object of StandardScalar

-----------------------------------------------------------

df1['INCOME'] = scaler.fit(df1[["INCOME"]])#called the function of fit.
df1['INCOME'] = scaler.transform(df1[['INCOME']])#called the function of transform

Теперь, что делает эта команда transform()?

Это та часть, где происходит расчет. Применяются формулы z-оценки = (x-mu)/std_dev…эти формулы применяются ко всем наблюдениям/строкам этого объекта/столбца. Все наблюдения начинаются в диапазоне от -3 до +3. Происходит стандартизация.

  • fit_transform() — Использование кода:
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() #created an object of StandardScalar

---------------------------------------

df1['INCOME'] = scaler.fit_transform(df1[['INCOME']])
#called the function of fit_transform

Теперь, что делает эта команда transform()?

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

Просто для того, чтобы показать пример того, как выглядят данные до fit_transform() и после его применения:

from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()


df1['INCOME']

#OUTPUT
0      125301.242500
1       50815.445310
2       62977.824160
3       77099.966240
4      126887.768340
           ...      
298     15251.524730
299     18408.395450
300     40171.535635
301     40171.535635
302         0.000000
Name: INCOME, Length: 289, dtype: float64


df1['INCOME'] = scaler.fit_transform(df1[["INCOME"]])
df1["INCOME"]

#OUTPUT
0      2.344391
1      0.139393
2      0.499435
3      0.917492
4      2.391357
         ...   
298   -0.913403
299   -0.819951
300   -0.175698
301   -0.175698
302   -1.364893
Name: INCOME, Length: 289, dtype: float64

Model_Training — использование fit(), transform()

Теперь мы видим, что и fit(), и transform() происходят в обучающих данных, почему в тестовых данных происходит только преобразование. Почему?

Очень интересно отметить: fit() вычисляет среднее значение и стандартное отклонение, используя данные обучения. На основании этих параметров производится дальнейшая стандартизация. Модель сформирована.

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

Очень важно отметить, что когда мы используем дерево решений или модель случайного леса, мы не выполняем процесс fit_transform. Тогда зачем нам то же самое для регрессии?

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

Теперь, даже если мы попытаемся построить график, мы можем построить его следующим образом:

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

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

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

Подробное объяснение стандартизации и нормализации DN в другом блоге, оставив подобное для справки:

https://medium.com/@swarnpriyaswarn/feature-scaling-4th-step-of-pre-processing-data-abff3a6f12d1

Счастливого обучения!