Sono utilizzati per due scopi diversi.
StandardScaler
cambia ogni colonna caratteristicaf:,i per f′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizer
cambia ogni campione xn=(fn,1,...,fn,d) per x′n=xnsize(xn),
dove size(xn) per
l1
la norma è ∥xn∥1=|fn,1|+...+|fn,d|,
l2
la norma è ,∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√
max
la norma è .∥xn∥∞=max{|fn,1|,...,|fn,d|}
Per illustrare il contrasto, considerare il set di dati che è monodimensionale (ogni punto dati ha una caratteristica),
dopo l'applicazione , il set di dati diventa .
Dopo aver applicato qualsiasi tipo di , il set di dati diventa , poiché l'unica funzione è divisa per sé. Quindi non ha senso per questo caso. Inoltre non ha alcuna utilità quando le caratteristiche hanno unità diverse, ad es. .{1,2,3,4,5}
StandardScaler
{−1.41,−0.71,0.,0.71,1.41}
Normalizer
{1.,1.,1.,1.,1.}Normalizer
(height,age,income)
Come menzionato in questa risposta , Normalizer
è utile soprattutto per controllare le dimensioni di un vettore in un processo iterativo, ad esempio un vettore di parametri durante l'allenamento, per evitare instabilità numeriche dovute a valori elevati.