Chúng được sử dụng cho hai mục đích khác nhau.
StandardScalerthay đổi từng cột tính năng thànhf:,if′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizerthay đổi từng mẫu thành trong đó choxn=(fn,1,...,fn,d)x′n=xnsize(xn),
size(xn)
l1định mức là,∥xn∥1=|fn,1|+...+|fn,d|
l2định mức là ,∥xn∥2=f2n,1+...+f2n,d−−−−−−−−−−−√
maxđịnh mức là .∥xn∥∞=max{|fn,1|,...,|fn,d|}
Để minh họa độ tương phản, hãy xem xét tập dữ liệu là một chiều (mỗi điểm dữ liệu có một tính năng),
Sau khi áp dụng , tập dữ liệu sẽ trở thành .
Sau khi áp dụng bất kỳ loại nào , tập dữ liệu sẽ trở thành , vì tính năng duy nhất được chia cho chính nó. Vì vậy, không có sử dụng cho trường hợp này. Nó cũng không được sử dụng khi các tính năng có các đơn vị khác nhau, ví dụ .{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)
Như đã đề cập trong câu trả lời này , Normalizerphần lớn hữu ích cho việc kiểm soát kích thước của vectơ trong quy trình lặp, ví dụ vectơ tham số trong quá trình đào tạo, để tránh sự mất ổn định số do giá trị lớn.