Chúng được sử dụng cho hai mục đích khác nhau.
StandardScaler
thay đổi từng cột tính năng thànhf:,if′:,i=f:,i−mean(f:,i)std(f:,i).
Normalizer
thay đổ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 , Normalizer
phầ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.