encoder = OneHotEncoder(use_cat_names=True)
X_train_encoded = encoder.fit_transform(X_train)
X_val_encoded = encoder.transform(X_val)
linear regression 진행할 때, fit_transform과 transform을 모델링에 적용하는데
둘의 차이점은 무엇일까?
우선 공식문서를 찾아보면
fit(X, y=None, sample_weight=None)
Compute the mean and std to be used for later scaling.
나중에 스케일링에 사용할 평균과 표준편차를 계산
transform(X, copy=None)
Perform standardization by centering and scaling
센터링 및 스케일링으로 표준화 수행
fit_transform(X, y=None, **fit_params)
Fit to data, then transform it.
학습데이터 세트에서
변환을 위한 기반 설정(예를 들어 학습 데이터 세트의 최대값/최소값등)을 먼저 fit()을 통해서 설정한 뒤,
이를 기반으로 학습 데이터의 transform()을 수행하되 학습 데이터에서 설정된 변환을 위한 기반 설정을 그대로 테스트 데이터에도 적용하기 위해서입니다.
즉 학습 데이터 세트로 fit() 된 Scaler를 이용하여 테스트 데이터를 변환할 경우에는 테스트 데이터에서 다시 fit()하지 않고 반드시 그대로 이 Scaler를 이용하여 transform()을 수행해야 합니다.
가령 Iris 학습 데이터 세트로 MinMaxScaler() 를 생성한 뒤 fit()하고 transform() 한 뒤 Classifier로 학습 했다면 예측 시 먼저 테스트 데이터 세트를 반드시 학습 데이터로 Scaling된 MinMaxScaler를 이용하여 fit()한 뒤 transform() 해야 됩니다.
즉 학습할 때와 동일한 기반 설정으로 동일하게 테스트 데이터를 변환해야 하는 것입니다. 학습 데이터에서 Scale된 데이터를 기반으로 Classifier가 학습이 되었기 때문에 이렇게 학습된 Classifier가 예측을 할 때에도 학습 데이터의 Scale 기준으로 테스트 데이터를 변환 한 뒤 predict해야 합니다.
728x90
'AI월드 > ⚙️AI BOOTCAMP_Section 2' 카테고리의 다른 글
Regularization,Lasso ,라쏘,regression_Day23(3) (0) | 2021.02.03 |
---|---|
회귀의 종류 총정리 (0) | 2021.02.02 |
다중 회귀 분석 vs 다항 회귀 분석_Day23(2) (0) | 2021.02.01 |
Regularization,Ridge,릿지,regression_Day23 (0) | 2021.02.01 |
회귀의 오류지표,MAE,MSE,RMSE,MAPE,MPE_Day22(6) (0) | 2021.01.30 |
댓글