Преобразования Данных
В области аналитики преобразования данных является одним из ключевых процессов, позволяющих привести данные из разных источников и с различными единицами измерения к единому виду. Это значительно упрощает сравнение, анализ и обработку данных, особенно при использовании алгоритмов машинного обучения.
Нормализация.
Нормализация — это процесс преобразования числовых данных в стандартный диапазон значений. Обычно этот диапазон лежит в пределах [0, 1] или [-1, 1]. Уравнение для нормализации выглядит следующим образом: x_norm = (x – x_min) / (x_max – x_min), где x_norm — нормализованное значение, x — исходное значение, \(x_min\) — минимальное значение в столбце или списке данных, а x_max — максимальное значение в том же диапазоне. Нормализация служит двум основным целям: она ускоряет обработку данных и приводит все значения к одинаковому масштабу. Это особенно важно, поскольку различия в диапазоне значений в наборе данных могут значительно повлиять на оптимизацию, особенно на градиентный спуск.
Стандартизация
Стандартизация — это процесс преобразования числовых данных в значения, которые имеют нормальное распределение. В результате среднее значение этого диапазона будет равно 0, а стандартное отклонение — 1. Этот метод также известен как нормализация по z-баллам.
Уравнение для стандартизации выглядит следующим образом: x_std = (x – mu)/(sigma), где mu — это среднее значение столбца или списка значений, а sigma
— стандартное отклонение того же столбца или списка.
Выбор между нормализацией и стандартизацией данных — это скорее вопрос искусства, чем науки. Тем не менее, часто рекомендуется провести эксперименты с обоими методами, чтобы определить, какой из них наиболее эффективен в вашей конкретной ситуации.
Вот несколько практических правил, которые могут помочь вам сделать правильный выбор:
- Для данных с гауссовским (нормальным) распределением лучше использовать стандартизацию.
- Если ваши данные имеют негауссовское (ненормальное) распределение, то нормализация может быть более подходящим вариантом.
Если в вашем столбце или списке значений присутствуют экстремальные значения или выбросы, то лучше использовать стандартизацию для устранения этих проблем.
Реализация
from statistics import mean, stdev
def normalization(data: list, ndigits: int = 3) -> list:
# (1)!
x_min = min(data)
x_max = max(data)
return [round((x - x_min) / (x_max - x_min), ndigits) for x in data]
def standardization(data: list, ndigits: int = 3) -> list:
# (2)!
mu = mean(data)
sigma = stdev(data)
return [round((x - mu) / (sigma), ndigits) for x in data]
-
Возвращает нормализованный список значений
-
Возвращает стандартизированный список значений