Sono utilizzati per due scopi diversi.
StandardScalercambia ogni colonna caratteristicaf:,i per f′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizercambia 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|,
l2la norma è ,∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√
maxla 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.