Normalització
Autor: Joan Puigcerver Ibáñez
Correu electrònic: j.puigcerveribanez@edu.gva.es
Llicència: CC BY-NC-SA 4.0
(Reconeixement - NoComercial - CompartirIgual) 🅭
Normalització
No totes les dades tenen la mateixa escala, és a dir, no tenen el mateix rang de valors.
Això pot suposar un problema per als algoritmes d'aprenentatge automàtic, ja que poden donar més pes
a les característiques amb valors més grans.
Per això, és important normalitzar les dades abans d'aplicar un algoritme d'aprenentatge automàtic.
La llibraría scikit-learn proporciona diverses tècniques de normalització
a través del mòdul sklearn.preprocessing .
MinMaxScaler
Una tècnica comuna de normalització és MinMaxScaler ,
que redimensiona les dades entre 0 i 1 utilitzant el valor mínim i màxim de cada característica.
\[
X_{\text{norm}} = \frac{X - X_{\text{min}}}{X_{\text{max}} - X_{\text{min}}}
\]
Exemple
Donades les dades d'entrada \(X = [1, 2, 3, 4, 5]\),
La normalització queda com:
\[
X_{\text{norm}} = \frac{X - 1}{5 - 1} = \left[0, 0.25, 0.5, 0.75, 1\right]
\]
La classe MinMaxScaler de scikit-learn permet normalitzar les dades
amb aquesta tècnica.
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
X_train_norm = scaler.fit_transform(X_train)
X_test_norm = scaler.transform(X_test)
- La funció
fit_transform ajusta el scaler als valors mínim i màxim de les dades d'entrenament
i normalitza les dades d'entrenament.
- La funció
transform normalitza les dades de prova sense modificar el scaler .
StandardScaler
Una altra tècnica comuna de normalització és StandardScaler ,
que redimensiona les dades perquè el conjunt de cada característica tinga mitjana igual a 0 (\(\mu = 0\))
i desviació estàndard igual a 1 (\(\sigma = 1\)).
\[
X_{\text{norm}} = \frac{X - \mu}{\sigma}
\]
Exemple
Donades les dades d'entrada \(X = [1, 2, 3, 4, 5]\), on \(\mu = 3\) i \(\sigma = 1.41\),
La normalització queda com:
\[
X_{\text{norm}} = \frac{X - 3}{1.41} = \left[-1.41, -0.71, 0, 0.71, 1.41\right]
\]
La classe StandardScaler de scikit-learn permet normalitzar les dades
amb aquesta tècnica.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_norm = scaler.fit_transform(X_train)
X_test_norm = scaler.transform(X_test)
|