Чтобы иметь возможность анализировать ваши данные и выполнять любую предварительную обработку или обработку сокращения, очень важно правильно нормализовать, стандартизировать и изменить размер ваших данных. Вот учебники.
Прежде чем мы углубимся в эту тему, давайте начнем с некоторых определений.
«Изменение масштаба» вектора означает добавление или вычитание константы, а затем умножение или деление на константу, как если бы вы меняли единицы измерения данных, например, чтобы преобразовать температуру из градусов Цельсия в градусы Фаренгейта.
«Нормализация» вектора чаще всего означает деление на норму вектора. Это также часто относится к масштабированию по минимуму и диапазону вектора, чтобы все элементы находились в диапазоне от 0 до 1, что приводит к общему масштабированию всех значений числовых столбцов набора данных.
«Стандартизация» вектора чаще всего означает вычитание меры местоположения и деление на меру масштаба. Например, если вектор содержит случайные значения с гауссовым распределением, можно вычесть среднее значение и разделить на стандартное отклонение, получив таким образом «стандартную нормальную» случайную величину со средним значением 0 и стандартным отклонением 1.
Зачем это делать?
Стандартизация:
Стандартизация функций вокруг центра и 0 со стандартным отклонением 1 важна при сравнении измерений, которые имеют разные единицы измерения. Переменные, измеряемые в разных масштабах, не вносят одинакового вклада в анализ и могут привести к систематической ошибке.
Например, переменная от 0 до 1000 будет иметь больший вес, чем переменная от 0 до 1. Использование этих переменных без стандартизации приведет к тому, что переменная будет иметь вес самого широкого диапазона 1000 в анализе. Преобразование данных в сопоставимые масштабы может избежать этой проблемы. Типичные процедуры нормализации данных выравнивают диапазон и/или изменчивость данных.
Стандартизация:
Точно так же целью нормализации является приведение значений числовых столбцов набора данных к общему масштабу, не искажая различий в диапазонах значений. Для машинного обучения каждый набор данных не требует нормализации. Это требуется только тогда, когда функции имеют разные диапазоны.
Например, рассмотрим набор данных, содержащий две характеристики: возраст и доход (x2). Где возраст колеблется от 0 до 100, а доход колеблется от 0 до 100 000 и выше. Доход примерно в 1000 раз превышает возраст. Таким образом, эти две характеристики находятся в очень разных диапазонах. Когда мы проводим более глубокий анализ, например, регрессия линейный многомерный, например, назначенный доход по своей сути будет больше влиять на результат из-за его более высокой ценности. Но это не обязательно означает, что он более важен как предиктор. Поэтому мы нормализуем данные, чтобы привести все переменные в один и тот же диапазон.
Когда это делать?
Нормализация — хороший метод, который можно использовать, когда вы не знаете распределение ваших данных или когда вы знаете, что распределение не является гауссовским (гауссова кривая). Нормализация полезна, когда ваши данные имеют различные масштабы, а используемый вами алгоритм не делает предположений о распределении ваших данных, таких как k ближайших соседей и сетей нейроны искусственный.
Стандартизация предполагает, что ваши данные имеют распределение Гаусса (гауссовая кривая). Это не обязательно должно быть правдой, но этот метод более эффективен, если ваше распределение атрибутов является гауссовым. Стандартизация полезна, когда ваши данные имеют различные масштабы, а используемый вами алгоритм делает предположения о том, что ваши данные имеют гауссово распределение, такое как линейная регрессия, логистическая регрессия и линейный дискриминантный анализ.
Стандартизация
Как мы видели ранее, стандартизация (или нормализация Z-оценки) означает центрирование переменной на нуле и стандартизацию дисперсии на 1. Процедура включает вычитание среднего значения каждого наблюдения, а затем деление на стандартное отклонение.
Результатом нормализации является то, что объекты будут масштабироваться так, чтобы они имели свойства стандартного нормального распределения с
μ=0 и σ=1
где μ — среднее (среднее) и σ — стандартное отклонение от среднего.
StandardScaler от scikit-learn удаляет среднее значение и масштабирует данные по единичной дисперсии. Мы можем импортировать метод StandardScaler из научного набора и применить его к нашему набору данных.
из sklearn.preprocessing import StandardScaler scaler = StandardScaler() data_scaled = scaler.fit_transform(data)
Теперь давайте проверим значения среднего и стандартного отклонения.
печать (data_scaled.mean (ось = 0)) печать (data_scaled.std (ось = 0))

Как и ожидалось, среднее значение каждой переменной теперь около нуля, а стандартное отклонение установлено равным 1. Таким образом, все значения переменных находятся в одном диапазоне.
print('Минимальные значения (сумма займа, процентная ставка и взнос): ', data_scaled.min(axis=0)) print('Максимальные значения (сумма займа, внутренняя ставка и взнос): ', data_scaled.max (ось=0))

Однако минимальное и максимальное значения варьируются в зависимости от начального разброса переменной и сильно зависят от наличия выбросов.
Стандартизация
При таком подходе данные масштабируются в фиксированном диапазоне — обычно от 0 до 1.
В отличие от нормализации, стоимость ограничения этого диапазона заключается в том, что мы получим меньшие стандартные отклонения, которые могут устранить эффект выбросов. Таким образом, MinMax Scalar чувствителен к выбросам.
Мин-макс масштабирование обычно выполняется с помощью следующего уравнения:
Давайте импортируем MinMaxScalar из Scikit-learn и применим его к нашему набору данных.
из sklearn.preprocessing import MinMaxScaler scaler = MinMaxScaler() data_scaled = scaler.fit_transform(data)
Теперь давайте проверим значения среднего и стандартного отклонения.
print('средства (Сумма займа, ставка Int и взнос): ', data_scaled.mean(axis=0)) print('std (Сумма займа, ставка Int и взнос): ', data_scaled.std(axis=0))

После MinMaxScaling распределения не центрируются на нуле, а стандартное отклонение не равно 1.
print('Минимум (Сумма кредита, ставка Int и взнос): ', data_scaled.min(axis=0)) print('Max (Сумма кредита, ставка Int и взнос): ', data_scaled.max(axis=0))

Но минимальные и максимальные значения нормализуются по переменным, в отличие от того, что происходит при стандартизации.
Надежное масштабирование
Масштабирование с использованием медианы и квантилей состоит из вычитания медианы из всех наблюдений и последующего деления на межквартильную разницу. Он масштабирует функции, используя статистику, устойчивую к выбросам.
Межквартильная разница – это разница между 75-м и 25-м квантилями:
IQR = 75-й квантиль — 25-й квантиль
Уравнение для расчета масштабированных значений:
X_scaled = (X — X.медиана) / IQR
Во-первых, импортируйте RobustScalar из Scikit Learn.
из sklearn.preprocessing import RobustScaler scaler = RobustScaler() data_scaled = scaler.fit_transform(data)
Теперь проверьте значения среднего и стандартного отклонения.
print('средства (Сумма займа, ставка Int и взнос): ', data_scaled.mean(axis=0)) print('std (Сумма займа, ставка Int и взнос): ', data_scaled.std(axis=0))

Как видите, распределения не центрированы на нуле, а стандартное отклонение не равно 1.
print('Минимум (Сумма кредита, ставка Int и взнос): ', data_scaled.min(axis=0)) print('Max (Сумма кредита, ставка Int и взнос): ', data_scaled.max(axis=0))

Минимальное и максимальное значения также не устанавливаются в некоторые верхние и нижние границы, как в MinMaxScaler.