정규화 vs 표준화
정규화 : 데이터의 범위의 차이를 왜곡하지 않고 공통 척도로 변경하는 것
표준화 : 데이터가 표준정규분포의 속성을 갖도록 재조정되는 것
| 정규화(Normalization) | 표준화(Standardization) | 
|---|---|
| Scaling에 최대/최소값 사용 | Scaling에 평균 및 표준편차 사용 | 
| [0,1] 또는 [-1,1] 사이의 값으로 변환 | 특정 범위로 제한되지 않음 | 
| Feature의 크기(범위)가 다를 때 사용 | 평균을 0, 표준편차를 1로 만들고자 할 때 사용 | 
| Feature의 분포에 대해 모를 때 유용 | Feature가 정규분포(에 근사)인 경우 유용 | 
| MinMaxScaler, MinAbsScaler, Normalizer | StandardScaler, RobustScaler | 
Scaler 종류
StandardScaler
- 평균이 0, 분산이 1인 표준정규분포화 
- 이상치의 영향 많이 받음 - 1 
 2
 3
 4
 5
 6- from sklearn.preprocessing import StandardScaler 
 std = StandardScaler()
 std.fit(X_train)
 X_train_scaled = std.transform(X_train)
 X_test_scaled = std.transform(X_test)
RobustScaler
- 평균과 분산 대신 중간값과 사분위값을 사용 
- 이상치의 영향 최소화 - 1 
 2
 3
 4
 5
 6- from sklearn.preprocessing import StandardScaler 
 std = StandardScaler()
 std.fit(X_train)
 X_train_scaled = std.transform(X_train)
 X_test_scaled = std.transform(X_test)
MinMaxScaler
- 0과 1 사이의 값으로 변환 
- 이상치의 영향 많이 받음 - 1 
 2
 3
 4
 5
 6- from sklearn.preprocessing import MinMaxScaler 
 mms = MinMaxScaler()
 mms.fit(X_train)
 X_train_scaled = mms.transform(X_train)
 X_test_scaled = mms.transform(X_test)
MaxAbsScaler
- -1과 1 사이의 값으로 변환 
- 이상치의 영향 많이 받음 - 1 
 2
 3
 4
 5
 6- from sklearn.preprocessing import MaxAbsScaler 
 mas = MaxAbsScaler()
 mas.fit(X_train)
 X_train_scaled = mas.transform(X_train)
 X_test_scaled = mas.transform(X_test)
Normalizer
- 각 열이 아닌 행마다 정규화 수행 
- 한 행의 모든 피처들 사이의 유클리드 거리가 1이 되도록 함 
- 학습이 빠르고, 과대적합 가능성을 낮출 수 있음 - 1 
 2
 3
 4
 5- from sklearn.preprocessing import RobustScaler 
 rbs = RobustScaler()
 X_train_scaled = rbs.fit_transform(X_train)
 X_test_scaled = rbs.transform(X_test)