Sklearn StandardScaler: стандартизация данных в машинном обучении
Scikit-learn (sklearn) - это библиотека машинного обучения на языке Python, которая предоставляет широкий выбор инструментов для работы с данными, препроцессинга, обучения моделей, оценки результатов и многое другое. Один из популярных модулей sklearn - это StandardScaler, который является частью модуля preprocessing.
StandardScaler является классом препроцессора (transformer) и используется для стандартизации данных. Это означает, что он преобразует признаки, чтобы они имели нулевое среднее значение и единичное стандартное отклонение. Для многих алгоритмов машинного обучения важным условием является стандартизация данных, чтобы признаки были на одной шкале.
Давайте рассмотрим пример применения StandardScaler на наборе данных. Предположим, у нас есть набор данных, состоящий из двух признаков: возраст (в годах) и заработная плата (в тысячах долларов). Наша цель состоит в том, чтобы стандартизировать эти признаки перед обучением модели машинного обучения.
Сначала нам необходимо импортировать необходимые модули:
from sklearn.preprocessing import StandardScaler
import numpy as np
Затем создадим экземпляр класса StandardScaler:
scaler = StandardScaler()
Далее мы подготавливаем данные для обучения:
features = np.array([[25, 45],
[30, 60],
[35, 70],
[40, 80],
[45, 90]])
Мы имеем 5 наблюдений (строк) и 2 признака (столбца).
Теперь мы можем использовать scaler для стандартизации наших признаков:
scaled_features = scaler.fit_transform(features)
Метод fit_transform выполняет две операции: сначала выполняет вычисление среднего значения и стандартного отклонения для каждого признака, а затем преобразует признаки, используя эти статистические значения.
После выполнения этих операций мы можем посмотреть наши стандартизированные данные:
print(scaled_features)
Вывод:
[[-1.41421356 -1.41421356]
[-0.70710678 -0.70710678]
[ 0. 0. ]
[ 0.70710678 0.70710678]
[ 1.41421356 1.41421356]]
Как видно из вывода, каждый признак теперь имеет среднее значение 0 и стандартное отклонение 1. Это позволяет нам работать с данными, у которых признаки находятся в разных диапазонах, исключая их влияние на результаты модели.
StandardScaler также поддерживает применение трансформации к новым данным:
new_data = np.array([[50, 100],
[55, 110]])
scaled_new_data = scaler.transform(new_data)
Здесь мы используем метод transform, чтобы применить стандартизацию к новым данным, используя ранее вычисленное среднее значение и стандартное отклонение.
Вот и все! Мы рассмотрели пример использования StandardScaler из библиотеки scikit-learn. Этот простой инструмент позволяет стандартизировать данные и упростить процесс подготовки данных для обучения модели машинного обучения.