PYTHON/Python
Python 머신러닝 피처 스케일링과 min-max 정규화 기초 정리
진리뷰
2024. 3. 28. 09:00
반응형
이 글은 Python 머신러닝 피처 스케일링과 min-max 정규화 개념 기초 정리를 담고 있습니다.
피처 스케일링(Feature scaling)
- 과적합 방지를 위해, 독립변수(x, Feature)의 범위 값 조정. 이로써 모델 성능 향상 가능.
- 경사 하강법(Gradient Descent) 기반 알고리즘은 x값이 경사하강법 단계 크기에 영향을 크게 미침. 따라서 피처 스케일링 적용 필요.
ex. Linear Regression, Logistic Regression, Neural Network...
- 점들 간 거리 기반 알고리즘(Distance Based Algorithms)도 피처 스케일링 적용 필요.
ex. KNN, K-means, SVM
min-max 정규화(Min-max normalization)
- (단위 등이) 서로 다른 값의 범위를 0~1로 조정하는 피처 스케일링 방법
- 사이킷런 MinMaxScaler() 함수로 구현 가능
from sklearn.preprocessing import MinMaxScaler
sca_minmax = MinMaxScaler()
- X값이 최소: 분자도 최솟값이 되므로, 0
- X값이 최대: 분자=분모이므로, 1
- 적용하기 전, 먼저 이상치 제거가 필요하다.
이상치 제거 ex. IQR turkey, outlier detection 알고리즘
min-max 정규화 예시
- 학습 전 train, test 셋으로 분류
- train에 fit_transform() 사용. test에는 transform() 사용.
from.sklearn.model_selection import train_test_split
from sklearn.preprocessing import MinMaxScaler
# train, test 분류
X = df['Feature']
Y = df['y']
x_train, x_test, y_train, y_test = train_test_split(X, Y ,testsize=0.3)
# min-max정규화 객체 생성
sca_minmax = MinMaxScaler()
# min-max정규화
x_train_minmax= sca_minmax.fit(x_train)
x_test_minmax = sca_minmax.transform(x_test)
추가 참고 글
[BASIC, TIP] 피처 스케일링이란? 정규화 vs 표준화?
dacon.io
반응형