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)
|