Как нормализовать массивы NumPy: краткое руководство

Если вы работали с Python для анализа данных или машинного обучения, вы, вероятно, сталкивались с массивами NumPy. Это мощный инструмент для обработки числовых данных, но иногда данные в этих массивах необходимо скорректировать или «нормализовать», чтобы эффективно использовать в ваших алгоритмах. Но что значит нормализовать массив?

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

Как нормализовать массивы NumPy: краткое руководство

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

Давайте погрузимся в это!

Оглавление

Каковы основы нормализации в Python?

Прежде чем мы реализуем нормализацию в Python, вы должны понять, что означает нормализация.

Как нормализовать массивы NumPy: краткое руководство

Поэтому в этом разделе мы рассмотрим, что такое нормализация и ее основные понятия.

Что такое нормализация?

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

Вы можете нормализовать массив NumPy, используя евклидову норму (также известную как норма L2). Кроме того, вы также можете нормализовать массивы NumPy, изменив масштаб значений в определенном диапазоне, обычно от 0 до 1.

В Python библиотека NumPy предоставляет эффективный способ нормализации массивов. Сюда входят также многомерные массивы и матрицы.

Почему важна нормализация?

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

Что такое нормы?

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

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

В следующем примере показана нормализация матрицы с использованием нормы Фробениуса:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Calculate the Frobenius norm
frobenius_norm = np.linalg.norm(matrix, 'fro')

# Normalize the matrix
normalized_matrix = matrix / frobenius_norm

print('Original Matrix:')
print(matrix)
print('nFrobenius Norm:')
print(frobenius_norm)
print('nNormalized Matrix:')
print(normalized_matrix)

Этот код Python сначала импортирует библиотеку NumPy и использует ее для создания матрицы. Затем он вычисляет норму Фробениуса матрицы, а затем делит каждый элемент матрицы на это значение, чтобы нормализовать его.

Вывод этого кода приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

Что такое нормализация в машинном обучении?

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

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

Каковы методы нормализации в Python?

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

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

  1. Мин-макс масштабирование

  2. L1 Нормализация

  3. Нормализация L2

1. Как выполнить масштабирование минимум-макс.

Мин-макс масштабирование также известно как линейная нормализация или масштабирование признаков. При минимально-максимальном масштабировании мы масштабируем значения массива NumPy так, чтобы они попадали в указанный диапазон, обычно от 0 до 1.

Для этого вы вычитаете минимальное значение из каждого элемента и делите результат на разницу между максимальным и минимальным значениями.

Вы можете представить масштабирование min-max математически как:

x' = (x - min(x)) / (max(x) - min(x))

В следующем примере показано, как можно выполнить минимальное-максимальное масштабирование с помощью библиотеки NumPy:

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform min-max scaling
min_val = np.min(matrix)
max_val = np.max(matrix)

scaled_matrix = (matrix - min_val) / (max_val - min_val)

print('Original Matrix:')
print(matrix)
print('nMin-Max Scaled Matrix:')
print(scaled_matrix)

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

Вывод этого кода приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

Мин-макс масштабирование — очень распространенная форма масштабирования в машинном обучении и предварительной обработке данных.

2. Как выполнить нормализацию L1

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

Формула для нормализации L1:

x' = x / sum(|x|)

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

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform L1 normalization
l1_norm = np.linalg.norm(matrix, 1, axis=1, keepdims=True)
l1_normalized_matrix = matrix / l1_norm

print('Original Matrix:')
print(matrix)
print('nL1 Normalized Matrix:')
print(l1_normalized_matrix)

В этом коде np.linalg.norm (matrix, 1, axis=1, keepdims=True) вычисляет норму L1 для каждой строки (это делается путем указания оси=1).

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

Результат приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

3. Как выполнить нормализацию L2

Нормализация L2 использует норму L2, которая представляет собой квадратный корень из суммы квадратов элементов массива.

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

Формула для нормализации L2:

x' = x / sqrt(sum(x^2))

Вот как вы можете выполнить нормализацию L2 с помощью NumPy :

import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# Perform L2 normalization
l2_norm = np.linalg.norm(matrix, 2, axis=1, keepdims=True)
l2_normalized_matrix = matrix / l2_norm

print('Original Matrix:')
print(matrix)
print('nL2 Normalized Matrix:')
print(l2_normalized_matrix)

В этом коде np.linalg.norm(matrix, 2, axis=1, keepdims=True) вычисляет норму L2 (евклидову норму) для каждой строки (это делается путем указания оси=1). Эта операция вернет вектор-столбец, где каждый элемент является нормой L2 соответствующей строки.

Разделив исходную матрицу на эти нормы (выполнив деление поэлементно), мы получим L2-нормализованную версию матрицы.

Результат приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

Хорошо, теперь, когда мы рассмотрели популярные способы создания нормализованного массива с помощью NumPy, давайте посмотрим, как вы можете сделать то же самое с помощью других библиотек Python в следующем разделе.

Как использовать Scikit-Learn для нормализации в Python

Scikit-learn — мощная библиотека Python для машинного обучения. Он предоставляет несколько инструментов для предварительной обработки данных.

Одним из инструментов, который вы можете использовать, является модуль sklearn.preprocessing , который предлагает различные методы для выполнения нормализации. Доступно множество различных функций масштабирования, преобразователей и нормализаторов. Однако мы сосредоточимся на MinMaxScaler и функции normalize .

Для предварительной обработки данных с помощью scikit-learn вы в основном используете API-интерфейс Transformer. Сюда входят методы fit , transform и fit_transform .

1. Как нормализовать массив с помощью MinMaxScaler

MinMaxScaler — это масштабатор, который нормализует данные до заданного диапазона, обычно [0, 1] .

Формула для MinMaxScalar приведена ниже:

scaled_value = (value - min_value) / (max_value - min_value)

Чтобы реализовать MinMaxScaler , вы можете выполнить следующие шаги:

  1. Импортируйте необходимые библиотеки:

    import numpy as np
    from sklearn.preprocessing import MinMaxScaler
  2. Создайте массив NumPy:

    data = np.array([[1., 2., 5.], [3., 6., 8.], [5., 10., 12.]])
  3. Создайте экземпляр MinMaxScaler и сопоставьте его с данными:

    scaler = MinMaxScaler()
    scaler.fit(data)
  4. Преобразуйте данные с помощью метода transform или fit_transform :

    normalized_data = scaler.transform(data)

Вывод этого кода приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

Как вы можете видеть в выводе, MinMaxScalarMatrix имеет только значения в диапазоне от 0 до 1.

2. Как выполнить нормализацию строк на месте

Вы также можете использовать нормализацию строк на месте в качестве альтернативы, используя функцию нормализации .

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

В следующем примере демонстрируется нормализация строк на месте:

from sklearn.preprocessing import normalize
import numpy as np

# Initialize your matrix
matrix = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]], dtype=float)

# Apply in-place row normalization
normalize(matrix, norm='l2', copy=False)

print('L2 Normalized Matrix:')
print(matrix)

В этом коде мы вызываем функцию normalize из sklearn , определяем норму для использования (в данном случае «l2») и устанавливаем copy=False для выполнения нормализации на месте.

Вывод этого кода приведен ниже:

Как нормализовать массивы NumPy: краткое руководство

Чтобы узнать больше о машинном обучении в Python , посмотрите следующее видео:

Последние мысли

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

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

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

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

Как и в любом другом инструменте, ключ к освоению нормализации лежит на практике. Так что не бойтесь замарать руки и поэкспериментировать с разными наборами данных и случайными значениями. Мир науки о данных — ваша устрица. Удачного кодирования!

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.