Как нормализовать массивы NumPy (минимальное-максимальное масштабирование, Z-оценка, L2)

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

Нормализация относится к процессу масштабирования данных в определенном диапазоне или распределении для того, чтобы сделать их более подходящими для анализа и обучения моделей. Это важный и общий этап предварительной обработки, который часто используется в машинном обучении. Это может быть особенно полезно при работе с моделями машинного обучения, основанными на расстоянии, такими как [алгоритм К-ближайших соседей](https://datagy.io/python

К концу этого руководства вы научитесь:

  • Как использовать функции NumPy для нормализации массива, включая масштабирование Mix-Max, нормализацию z-показателя и нормализацию L2.

  • Как нормализовать многомерные массивы в NumPy

  • Как использовать различные методы нормализации в NumPy

Оглавление

Понимание того, почему нормализация имеет значение

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

В этом уроке мы рассмотрим три основных метода нормализации:

  1. Min-Max Scaling, который масштабирует данные в диапазоне от 0 до 1.

  2. Нормализация Z-показателя, которая преобразует нормальное распределение в среднее значение 0 и стандартное отклонение 1, и

  3. Нормализация L2, которая преобразует наши данные в единичные векторы с величинами, равными 1.

Нормализация позволяет осмысленно предварительно обрабатывать данные и необходима для многих различных алгоритмов машинного обучения. При работе с данными в разных масштабах алгоритмы на основе расстояния будут иметь значительно лучшую производительность, если вы нормализуете и масштабируете свои данные.

Например, при прогнозировании того, как цены, количество комнат и площадь дома будут в очень разных масштабах, это может привести к проблемам с производительностью, если данные не нормализованы.

Как использовать минимально-максимальное масштабирование для векторной нормализации в NumPy

Мин-максное масштабирование — один из самых простых и наиболее часто используемых методов нормализации. Этот метод масштабирует данные до определенного диапазона, обычно от [0, 1) (это означает, что данные включают 0 и доходят до 1, но не включают его).

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

Давайте посмотрим на формулу метода мин-максного масштабирования:

X_normalized = (X - X_min) / (X_max - X_min)

Мы можем легко реализовать это в NumPy, особенно учитывая, что NumPy позволяет выполнять преобразования по массивам. Давайте посмотрим, как реализовать технику масштабирования min-max в NumPy:

# Реализация масштабирования Min-Max в NumPy
import numpy as np

# Пример данных
data = np.array([1, 2, 3, 4, 5], dtype=float)

# Масштабирование Min-Max
min_val = np.min(data)
max_val = np.max(data)
scaled_data = (data - min_val) / (max_val - min_val)

print("Исходные данные:", data)
print("Масштабированные данные Min-Max:", scaled_data)

# Returns:
# Original Data: [1. 2. 3. 4. 5.]
# Min-Max Scaled Data: [0.   0.25 0.5  0.75 1.  ]

В приведенном выше примере мы сначала определили массив данных. Затем мы рассчитали минимальное и максимальное значения с помощью функций np.min() и np.max() соответственно. После этого мы создали новый массив данных, применив формулу для масштабирования методом минимума и максимума. Поскольку массивы NumPy могут модифицироваться поэлементно, нам не пришлось проходить через каждое значение в цикле.

В следующем разделе мы рассмотрим, как можно использовать NumPy для применения нормализации по z

Как использовать нормализацию Z-показателя в NumPy

Z-счетная стандартизация используется для преобразования данных таким образом, чтобы их среднее значение было равно 0, а стандартное отклонение — 1. Эта техника также известна как нормализация с нулевым средним. Этот метод наиболее полезен при работе с данными или алгоритмами, которые предполагают нормальное (или гауссово) распределение данных.

Этот метод особенно полезен, когда вы хотите центрировать данные вокруг нуля и масштабировать их, обеспечивая единичную дисперсию.

Давайте рассмотрим формулу для нормализации z

X_normalized = (X - X_mean) / X_std

Мы можем заметить, что из каждой точки данных вычитается среднее значение, и результат делится на стандартное отклонение данных. Поскольку NumPy позволяет применять преобразования к массивам данных, мы можем легко реализовать такую функцию на наших массивах. Давайте посмотрим, как мы можем сделать это в NumPy:

# Реализация нормализации Z-оценкой в NumPy
import numpy as np

# Пример данных
data = np.array([1, 2, 3, 4, 5], dtype=float)

# Стандартизация Z-оценкой
mean = np.mean(data)
std_dev = np.std(data)
standardized_data = (data - mean) / std_dev

print("Исходные данные:", data)
print("Стандартизованные данные Z-оценкой:", standardized_data)

# Returns:
# Original Data: [1. 2. 3. 4. 5.]
# Z-Score Standardized Data: [-1.41421356 -0.70710678  0.          0.70710678  1.41421356]

В указанном выше блоке кода мы вычислили необходимые значения, а именно среднее значение и стандартное отклонение. Затем мы смогли нормализовать наши данные с использованием нормализации по z-оценке, применив формулу ко всему массиву. Мы видим, что среднее значение данных заменено на 0 (ранее было 3), а стандартное отклонение стало равно 1.

Давайте теперь рассмотрим наш последний метод нормализации: нормализацию L2 в NumPy.

Как использовать нормализацию L2 в NumPy

L2-нормализация — это методика, которая преобразует каждую точку данных в единичный вектор (то есть вектор с величиной 1). Для L2-нормализации мы сначала вычисляем L2-норму данных и делим каждый элемент данных на эту норму, чтобы преобразовать его в единичный вектор.

Этот метод особенно полезен для анализа текстов и других алгоритмов машинного обучения, которые зависят от векторных представлений данных.

Чтобы использовать L2 нормализацию в NumPy, мы можем сначала рассчитать L2 норму данных, а затем разделить каждую точку данных на эту норму. NumPy включает в себя функцию для расчёта L2 нормы, функцию np.linalg.norm(). Данная функция принимает массив данных и рассчитывает норму.

Давайте посмотрим, как мы можем применить L2-нормализацию к нашему массиву данных в NumPy:

# Нормализация данных с использованием L2-нормализации в NumPy
import numpy as np

# Пример данных (вектор-строка)
data = np.array([1, 2, 3, 4, 5], dtype=float)

# L2 (единичный вектор) нормализация
norm = np.linalg.norm(data)  # Вычисление L2-нормы данных
normalized_data = data / norm

print("Исходные данные:", data)
print("L2-нормализованные данные:", normalized_data)

# Returns:
# Original Data: [1. 2. 3. 4. 5.]
# L2 Normalized Data: [0.13483997 0.26967994 0.40451992 0.53935989 0.67419986]

В приведенном выше блоке кода мы сначала вычислили норму L2 наших данных. Затем мы разделили каждую точку данных в массиве на норму. Это нормализовало наш массив с использованием нормализации L2.

L2-нормализация — это мощный метод, обеспечивающий одинаковую длину векторов данных при сохранении их направления. Это важный метод нормализации, когда необходимо сохранять постоянство величин векторов, не изменяя их направлений.

Заключение

В этом учебном пособии мы рассмотрели важность нормализации данных и подробно остановились на трех основных методах нормализации в NumPy: масштабирование Min-Max, стандартизация по Z-оценке и нормализация L2. Для аналитика данных или научного сотрудника понимание и применение этих методик имеют решающее значение для предварительной обработки ваших данных, делая их более подходящими для анализа и задач машинного обучения.

Дополнительные ресурсы

Чтобы узнать больше о смежных темах, ознакомьтесь с нижеследующими учебными пособиями:

Last updated