Як нормалізувати дані в python


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

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

Коли змінні вимірюються в різних масштабах, вони часто не однаково впливають на аналіз. Наприклад, якщо значення однієї змінної коливаються від 0 до 100 000, а значення іншої змінної — від 0 до 100, змінній із більшим діапазоном буде присвоєно більшу вагу в аналізі.

Стандартизуючи змінні, ми можемо бути впевнені, що кожна змінна однаково впливає на аналіз.

Щоб нормалізувати значення між 0 і 1, ми можемо використовувати таку формулу:

x норма = (x i – x min ) / (x max – x min )

золото:

  • x норма : i-те нормалізоване значення в наборі даних
  • x i : i-те значення набору даних
  • x max : мінімальне значення в наборі даних
  • x min : максимальне значення в наборі даних

У наведених нижче прикладах показано, як нормалізувати одну або кілька змінних у Python.

Приклад 1: нормалізуйте масив NumPy

Наступний код показує, як нормалізувати всі значення в масиві NumPy:

 import numpy as np 

#create NumPy array
data = np. array ([[13, 16, 19, 22, 23, 38, 47, 56, 58, 63, 65, 70, 71]])

#normalize all values in array
data_norm = (data - data. min ())/ (data. max () - data. min ())

#view normalized values
data_norm

array([[0. , 0.05172414, 0.10344828, 0.15517241, 0.17241379,
        0.43103448, 0.5862069, 0.74137931, 0.77586207, 0.86206897,
        0.89655172, 0.98275862, 1. ]])

Кожне зі значень у нормалізованому масиві тепер знаходиться між 0 і 1.

Приклад 2: нормалізуйте всі змінні в Pandas DataFrame

Наступний код показує, як нормалізувати всі змінні в pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

#normalize values in every column
df_norm = (df-df. min ())/ (df. max () - df. min ())

#view normalized DataFrame
df_norm

        points assists rebounds
0 0.764706 0.125 0.857143
1 0.000000 0.375 0.428571
2 0.176471 0.375 0.714286
3 0.117647 0.625 0.142857
4 0.411765 1.000 0.142857
5 0.647059 0.625 0.000000
6 0.764706 0.625 0.571429
7 1.000000 0.000 1.000000

Кожне зі значень у кожному стовпці тепер становить від 0 до 1.

Приклад 3: Нормалізація певних змінних у Pandas DataFrame

Наступний код показує, як нормалізувати певну змінну в pandas DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' points ': [25, 12, 15, 14, 19, 23, 25, 29],
                   ' assists ': [5, 7, 7, 9, 12, 9, 9, 4],
                   ' rebounds ': [11, 8, 10, 6, 6, 5, 9, 12]})

define columns to normalize
x = df. iloc [:,0:2]

#normalize values in first two columns only
df. iloc [:,0:2] = (xx. min ())/ (x. max () - x. min ())

#view normalized DataFrame
df

	points assists rebounds
0 0.764706 0.125 11
1 0.000000 0.375 8
2 0.176471 0.375 10
3 0.117647 0.625 6
4 0.411765 1.000 6
5 0.647059 0.625 5
6 0.764706 0.625 9
7 1.000000 0.000 12

Зверніть увагу, що нормалізуються лише значення в перших двох стовпцях.

Додаткові ресурси

Наступні посібники надають додаткову інформацію про нормалізацію даних:

Як нормалізувати дані між 0 і 1
Як нормалізувати дані від 0 до 100
Стандартизація чи нормалізація: в чому різниця?

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *