Come normalizzare i dati in python
Spesso nella statistica e nell’apprendimento automatico normalizziamo le variabili in modo tale che l’intervallo di valori sia compreso tra 0 e 1.
Il motivo più comune per normalizzare le variabili è quando stiamo eseguendo un tipo di analisi multivariata (ovvero vogliamo comprendere la relazione tra diverse variabili predittive e una variabile di risposta) e vogliamo che ciascuna variabile contribuisca equamente all’analisi.
Quando le variabili vengono misurate su scale diverse, spesso non contribuiscono equamente all’analisi. Ad esempio, se i valori di una variabile vanno da 0 a 100.000 e i valori di un’altra variabile vanno da 0 a 100, alla variabile con l’intervallo maggiore verrà assegnato un peso maggiore nell’analisi.
Standardizzando le variabili, possiamo essere sicuri che ciascuna variabile contribuisca equamente all’analisi.
Per normalizzare i valori compresi tra 0 e 1, possiamo utilizzare la seguente formula:
x norma = (x i – x min ) / (x max – x min )
Oro:
- x norm : l’ iesimo valore normalizzato nel set di dati
- x i : l’i -esimo valore del set di dati
- x max : il valore minimo nel set di dati
- x min : il valore massimo nel set di dati
I seguenti esempi mostrano come normalizzare una o più variabili in Python.
Esempio 1: normalizza un array NumPy
Il codice seguente mostra come normalizzare tutti i valori in un array 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. ]])
Ciascuno dei valori nell’array normalizzato è ora compreso tra 0 e 1.
Esempio 2: normalizza tutte le variabili in Pandas DataFrame
Il codice seguente mostra come normalizzare tutte le variabili in un DataFrame panda:
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
Ciascuno dei valori in ciascuna colonna è ora compreso tra 0 e 1.
Esempio 3: normalizzare variabili specifiche in Pandas DataFrame
Il codice seguente mostra come normalizzare una variabile specifica in un DataFrame panda:
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
Si noti che solo i valori nelle prime due colonne sono normalizzati.
Risorse addizionali
Le seguenti esercitazioni forniscono informazioni aggiuntive sulla normalizzazione dei dati:
Come normalizzare i dati tra 0 e 1
Come normalizzare i dati tra 0 e 100
Standardizzazione o normalizzazione: qual è la differenza?