표 4-1은 0에서 5까지 숫자로 이루어진 간단한 예시 데이터셋에 표준화와 정규화 두 개의 특성 스케일 변환 기법을 적용한 결과를 보여 줍니다.
▼ 표 4-1 표준화와 최소-최대 정규화 비교
입력 |
표준화 |
최소-최대 정규화 |
0.0 |
-1.46385 |
0.0 |
1.0 |
- 0.87831 |
0.2 |
2.0 |
- 0.29277 |
0.4 |
3.0 |
0.29277 |
0.6 |
4.0 |
0.87831 |
0.8 |
5.0 |
1.46385 |
1.0 |
표 4-1의 표준화와 정규화는 다음 코드로 만들 수 있습니다.
>>> ex = np.array([0, 1, 2, 3, 4, 5])
>>> print('표준화:', (ex - ex.mean()) / ex.std())
표준화: [-1.46385011 -0.87831007 -0.29277002 0.29277002 0.87831007 1.46385011]
>>> print('정규화:', (ex - ex.min()) / (ex.max() - ex.min()))
정규화: [ 0. 0.2 0.4 0.6 0.8 1. ]
MinMaxScaler 클래스와 비슷하게 사이킷런은 표준화를 위한 클래스도 제공합니다.
>>> from sklearn.preprocessing import StandardScaler
>>> stdsc = StandardScaler()
>>> X_train_std = stdsc.fit_transform(X_train)
>>> X_test_std = stdsc.transform(X_test)