Sie werden für zwei verschiedene Zwecke verwendet.
StandardScaler
ändert jede Feature- Spalte inf:,if′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizer
ändert jede Stichprobe in wobei fürxn=(fn,1,...,fn,d)x′n=xnsize(xn),
size(xn)
l1
Norm ist,∥xn∥1=|fn,1|+...+|fn,d|
l2
Norm ist ,∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√
max
Norm ist .∥xn∥∞=max{|fn,1|,...,|fn,d|}
Betrachten Sie zur Veranschaulichung des Kontrasts den eindimensionalen Datensatz (jeder Datenpunkt hat ein Merkmal).
Nach dem Anwenden wird der Datensatz zu .
Nach dem Anwenden eines beliebigen Typs wird der Datensatz zu , da das einzige Merkmal durch sich selbst geteilt wird. Hat also keinen Sinn für diesen Fall. Es hat auch keine Verwendung, wenn Merkmale unterschiedliche Einheiten haben, z. B. .{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)
Wie in dieser Antwort erwähnt , Normalizer
ist dies hauptsächlich nützlich, um die Größe eines Vektors in einem iterativen Prozess zu steuern, z. B. eines Parametervektors während des Trainings, um numerische Instabilitäten aufgrund großer Werte zu vermeiden.