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)
l1Norm ist,∥xn∥1=|fn,1|+...+|fn,d|
l2Norm ist ,∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√
maxNorm 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 , Normalizerist 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.