Як нормалізувати масиви 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?

Нормалізацію масивів можна виконати декількома способами. Однак одні методи більш популярні, ніж інші, завдяки своїй високій ефективності.

У цьому розділі ми розглянемо три широко використовувані методи нормалізації:

  1. Мінімально-максимальне масштабування

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

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

1. Як виконати мінімально-максимальне масштабування

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

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

Ви можете представити мінімально-максимальне масштабування математично як:

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 для кожного рядка (це робиться шляхом вказівки axis=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 (евклідову норму) для кожного рядка (це робиться шляхом вказівки axis=1). Ця операція поверне вектор-стовпець, де кожен елемент є нормою L2 відповідного рядка.

Розділивши вихідну матрицю на ці норми (виконуючи поелементний ділення), ми отримаємо L2 нормалізовану версію матриці.

Результат наведено нижче:

Як нормалізувати масиви NumPy: короткий посібник

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

Як використовувати Scikit-Learn для нормалізації в Python

Scikit-learn — потужна бібліотека Python для машинного навчання. Він надає кілька інструментів для попередньої обробки даних.

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

Для попередньої обробки даних за допомогою scikit-learn ви переважно використовуєте transformer API. Це включає методи 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. Як виконати нормалізацію рядків на місці

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

Цей метод нормалізує кожен вхідний масив або функцію незалежно шляхом масштабування вектора до одиничної норми. За замовчуванням функція нормалізації використовує норму 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)

У цьому коді ми викликаємо функцію нормалізації з sklearn , визначаємо норму для використання ('l2' у цьому випадку) і встановлюємо copy=False для виконання нормалізації на місці.

Результат цього коду наведено нижче:

Як нормалізувати масиви NumPy: короткий посібник

Щоб дізнатися більше про машинне навчання в , перегляньте це відео:

Заключні думки

Досліджуючи науку про дані та машинне навчання, ви побачите, що процес нормалізації є важливим кроком у вашому конвеєрі попередньої обробки даних.

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

По-друге, це допоможе вам прискорити процес навчання. Деякі алгоритми, особливо ті, що базуються на обчисленні обчислень відстані, збігаються швидше, коли дані нормалізуються.

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

Як і будь-який інструмент, ключ до оволодіння нормалізацією лежить на практиці. Тож не соромтеся забруднити руки та експериментувати з різними наборами даних і випадковими значеннями. Світ вашої устриці. Щасливого кодування!


Змініть формати дати за допомогою редактора Power Query

Змініть формати дати за допомогою редактора Power Query

У цьому посібнику ви дізнаєтеся, як перетворити текст у формат дати за допомогою редактора Power Query в LuckyTemplates.

Power Query: об’єднайте файли з кількох папок

Power Query: об’єднайте файли з кількох папок

Дізнайтеся, як об’єднати файли з кількох папок у мережі, робочому столі, OneDrive або SharePoint за допомогою Power Query.

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Обчисліть місячне ковзне середнє з початку року (з початку року) у LuckyTemplates

Цей підручник пояснює, як обчислити місячне ковзне середнє на базі даних з початку року за допомогою функцій AVERAGEX, TOTALYTD та FILTER у LuckyTemplates.

Створення таблиці дат у LuckyTemplates

Створення таблиці дат у LuckyTemplates

Дізнайтеся, чому важлива спеціальна таблиця дат у LuckyTemplates, і вивчіть найшвидший і найефективніший спосіб це зробити.

Мобільні звіти LuckyTemplates. Поради та методи

Мобільні звіти LuckyTemplates. Поради та методи

У цьому короткому посібнику розповідається про функцію мобільних звітів LuckyTemplates. Я збираюся показати вам, як ви можете ефективно створювати звіти для мобільних пристроїв.

Звіти про професійну аналітику послуг у LuckyTemplates

Звіти про професійну аналітику послуг у LuckyTemplates

У цій презентації LuckyTemplates ми розглянемо звіти, що демонструють професійну аналітику послуг від фірми, яка має кілька контрактів і залучених клієнтів.

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Оновлення Microsoft Power Platform | Microsoft Ignite 2021

Ознайомтеся з основними оновленнями для Power Apps і Power Automate, а також їх перевагами та наслідками для Microsoft Power Platform.

Загальні функції SQL: огляд

Загальні функції SQL: огляд

Відкрийте для себе деякі поширені функції SQL, які ми можемо використовувати, наприклад String, Date і деякі розширені функції для обробки та маніпулювання даними.

Створення шаблону LuckyTemplates: керівництво та поради

Створення шаблону LuckyTemplates: керівництво та поради

У цьому підручнику ви дізнаєтеся, як створити свій ідеальний шаблон LuckyTemplates, налаштований відповідно до ваших потреб і вподобань.

Параметри полів і малі кратні в LuckyTemplates

Параметри полів і малі кратні в LuckyTemplates

У цьому блозі ми продемонструємо, як шарувати параметри поля з малими кратними, щоб створити неймовірно корисну інформацію та візуальні ефекти.