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?

Aggiungi un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *