Масштабирование функций в машинном обучении
Масштабирование функций означает изменение размеров функций таким образом, чтобы ни одна из них не преобладала над другими. В машинном обучении мы используем концепцию масштабирования функций, чтобы убедиться, что все функции, которые мы используем для обучения модели машинного обучения, имеют одинаковый масштаб. В этой статье я познакомлю вас с концепцией масштабирования функций в машинном обучении и ее реализацией с использованием Python.
Масштабирование функций
Масштабирование функций – одно из наиболее важных преобразований, которые нам необходимо применить к функциям перед обучением модели машинного обучения, потому что не все алгоритмы машинного обучения работают хорошо, если входные функции или входные значения не распределяются в аналогичном масштабе.
В машинном обучении есть два распространенных способа масштабирования функций:
- Нормализация
- Стандартизация
Во время нормализации значения сдвигаются и изменяются в размере, так что они оказываются в диапазоне от 0 до 1. Метод стандартизации сначала вычитает среднее значение, а затем делит его на стандартное отклонение, так что результирующее распределение функций имеет среднее значение как 0 и стандартное отклонение – 1.
Есть одна вещь, которую вы всегда должны помнить при использовании метода масштабирования функций – при изменении размеров функций важно соответствовать только обучающим данным, а не всему набору данных.
Масштабирование функций с использованием Python
Итак, есть два распространенных метода масштабирования функций в машинном обучении: MinMaxScaler для нормализации и StandardScaler для стандартизации. Разница между этими двумя методами заключается в том, что нормализация изменяет масштаб данных, так что в итоге мы получаем значения от 0 до 1, а стандартизация изменяет масштаб данных, так что среднее значение становится равным 0, а стандартное отклонение становится равным 1.
Теперь давайте посмотрим, как масштабировать функции с помощью Python. Библиотека Scikit-learn в Python предоставляет все методы, которые вы можете использовать в наборе обучающих данных после разделения данных на обучающий и тестовый наборы. Предположим, вы готовы с обучающим набором. Вот как реализовать масштабирование функций с помощью Python:
import pandas as pd from sklearn.model_selection import train_test_split from sklearn.preprocessing import MinMaxScaler from sklearn.preprocessing import StandardScaler data = pd.read_csv("https://biconsult.ru/img/datascience-ml-ai/Mini-batch-K-means-Clustering-in-Machine-Learning/housing.csv") # using these three features for simplicity data = data.loc[:, ["median_income", "latitude", "longitude"]] training, testing = train_test_split(data, test_size=0.2, random_state=42) normalization = MinMaxScaler().fit_transform(training) standardization = StandardScaler().fit_transform(training)
Резюме
Вам не нужно использовать одновременно стандартизацию и нормализацию для изменения масштаба данных, вам нужно использовать нормализацию, когда набор данных не следует нормальному распределению, и вам нужно использовать стандартизацию, когда набор данных следует нормальному распределению. Надеюсь, вам понравилась эта статья о масштабировании функций в машинном обучении и его реализации с использованием Python.