본문 바로가기
AI월드/⚙️AI BOOTCAMP_Section 2

fit_transform과 transform의 차이,싸이킷런

by khalidpark 2021. 2. 2.
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해야 합니다.

 

출처 : www.inflearn.com/questions/19038

 

fit & transform 과 fit_transform의 차이가 무엇인가요? - 인프런

질문 - fit & transform 과 fit_transform의 차이가 무엇인가요? 안녕하세요, 정말 좋은 강의 잘 듣고 있습니다!! sklearn 의 클래스를 사용하다보면 fit, transform이 많이 언급되는데요. 어쩔때는 fit 하고나서

www.inflearn.com

출처 : scikit-learn.org/stable/modules/generated/sklearn.preprocessing.StandardScaler.html#sklearn.preprocessing.StandardScaler.fit_transform

 

sklearn.preprocessing.StandardScaler — scikit-learn 0.24.1 documentation

 

scikit-learn.org

728x90

댓글