데이터의 스케일이 중요한 모델의 경우 스케일링을 통해 단위를 맞춰주어야한다.
최소-최대 정규화 (Normalization, Min-Max Scaling)
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler().fit(X_train)
Z_train = pd.DataFrame(scaler.transform(X_train), columns = X_train.columns)
Z_test = pd.DataFrame(scaler.transform(X_test), columns = X_test.columns)
Z_train.describe()
서로 다른 범위의 데이터를 [0,1] 범위로 변환한다.
이상치에 취약하며, 데이터분포를 가정하지 않는 모델에 적합하다.
최댓값과 최솟값이 중요한 경우 사용된다. (최대최소가 변하면 다시 정규화학습해야함)
신경망의 활성화함수(RdLU, Sigmoid, Tahn 등)이 특정 범위 내의 입력값에서 잘 동작하기 때문에 딥러닝(ANN, CNN, RNN)에서 자주 사용된다.
표준화(Standardization, Z-score Scaling)
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler().fit(X_train)
Z_train = pd.DataFrame(scaler.transform(X_train), columns = X_train.columns)
Z_test = pd.DataFrame(scaler.transform(X_test), columns = X_test.columns)
Z_train.describe()
데이터가 평균 0, 표준편차 1을 갖도록 변환한다.
이상치의 영향이 적어 이상치가 많다면 표준화가 더 안정적이다.
정규분포를 가정하는 데이터에서 효과적이며,
거리 기반 알고리즘(선형회귀, PCA, SVM, k-NN)에서 유용하다. → 평균을 0으로 맞추면 기울기(가중치) 업데이트 안정적
참고 서적 : GIL's LAB, 「파이썬을 활용한 머신러닝 자동화 시스템 구축」, 위키북스(2022)
'⚙️ Tech > ML' 카테고리의 다른 글
[ML] 사이킷런 지도 학습 클래스 정리 (0) | 2025.02.12 |
---|---|
[ML/python] 필터링 기반 특징 선택 (Feature selection, Filter Method, SelectKBest) (0) | 2025.02.10 |
[ML/python] 불균형데이터 오버샘플링, 언더샘플링 (SMOTE, NearMiss) (0) | 2025.02.09 |
[ML/python] 범주형, 서열형 변수 처리 (더미화, 치환) (0) | 2025.02.09 |
[ML/python] 결측값 처리 (SimpleImputer, KNNImputer) (0) | 2025.02.09 |