Eles são usados para dois propósitos diferentes.
StandardScaler
altera cada coluna de recursof:,i para f′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizer
muda cada amostra xn=(fn,1,...,fn,d) para x′n=xnsize(xn),
Onde size(xn) para
l1
norma é ∥xn∥1=|fn,1|+...+|fn,d|,
l2
norma é ∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√,
max
norma é ∥xn∥∞=max{|fn,1|,...,|fn,d|}.
Para ilustrar o contraste, considere o conjunto de dados {1,2,3,4,5}que é unidimensional (cada ponto de dados possui um recurso).
Após a aplicação StandardScaler
, o conjunto de dados se torna{ - 1,41 , - 0,71 , 0 , 0,71 , 1,41 }.
Depois de aplicar qualquer tipo de Normalizer
, o conjunto de dados se torna{ 1. , 1. , 1. , 1. , 1. }, já que o único recurso é dividido por ele mesmo. Portanto Normalizer
, não tem utilidade para este caso. Também não é útil quando os recursos têm unidades diferentes, por exemplo( H e i gh t , um ge , i n c o m e ).
Como mencionado nesta resposta , Normalizer
é útil principalmente para controlar o tamanho de um vetor em um processo iterativo, por exemplo, um vetor de parâmetro durante o treinamento, para evitar instabilidades numéricas devido a valores elevados.