강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

강주형님의 프로필 이미지
강주형

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

Scaler 관련 질문

해결된 질문

작성

·

178

0

선생님 안녕하세요! 머신러닝 강의 잘 따라가고 있습니다.

스케일링 관련해서 궁금증이 생겨서 문의 드립니다.

 

일반적으로 train 데이터에 대해서 fit을 해서 그 train 데이터에 대한 정보를 가지고 train/val/test 각각 tranform을 하는 것으로 알고 있습니다.

그런데 여기서 MinMax를 예로 들었을 때

train의 Max보다 큰 값이나 Min보다 작은 값이 test 데이터에 있는 경우도 있을 거란 생각이 들더라구요.

 

그래서 직접 그런 상황을 가정해서 코드를 돌려봤는데 기존에 설정한 범위인 0~1이나 -1~1을 벗어난 값으로 반환이 됐습니다.

생각해보면 당연한 결과이긴 한데, 이렇게 반환이 되어도 모델로 예측을 할 때 문제가 발생하지 않는지가 궁금합니다.

 

감사합니다.

답변 1

0

권 철민님의 프로필 이미지
권 철민
지식공유자

안녕하십니까, 

네, 테스트 데이터에서 그렇게 반환이 되는 게 맞습니다. 

가령 예를 들어 학습데이터의 특정 피처가 최대값이 100이라고 하겠습니다. 

그리고 이를 MinMaxScaler로 변환하여 100값이 1 로 변환이 되었습니다. 

이때 테스트 데이터의 해당 피처의 최대값이 200인 경우에 해당 값은 2로 변환이 되어야 합니다. 해당 값이 1로 변환이 되면 잘못 변환 된 것 입니다. 즉 100-> 1로 변환했기 때문에 200은 2로 변환이 되어야 합니다. 

때문에 테스트 데이터에서 MinMaxScaler의 fit()이나 fit_transform()을 호출하면 안됩니다. fit_transform()을 테스트 데이터에 적용하면 200이 1로 변환되기 때문입니다. 

그래서 학습데이터로 fit()된 Scaler객체를 이용하여 테스트 데이터를 transform()호출해야 200이 2로 변환이 됩니다.

 

감사합니다.   

강주형님의 프로필 이미지
강주형
질문자

항상 감사합니다

강주형님의 프로필 이미지
강주형

작성한 질문수

질문하기