강의

멘토링

로드맵

Inflearn brand logo image

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

gkfksla님의 프로필 이미지
gkfksla

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

범주가 다른 컬럼의 스케일링 방법 질문

해결된 질문

작성

·

28

0

스케일링도 데이터 프레임별 범위에 따라 fit() 할 프레임을 구분해줘야할까요?

train['a'] 컬럼이 1~100 범위이고

test['a'] 컬럼은 1~200 범위라면

B먼저 fit하고 A는 transform 을 해줘야하나요?

아니면 각각 fit_transform 해야할까요?

 

범주형 컬럼 인코딩의 경우를 생각해보니 문득 위와 같은 상황에서 어떻게 해야하는지 궁금하네요.

 

 

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

모든 방법의 의사결정은 평가지표 점수를 보고 판단합니다. 💪💪💪

train에 대해 fit()을 먼저 수행하고 test 데이터에 대해서는 transform()만을 사용하는 것으로 준비해도

큰문제가 없고

만약 위와 같은 케이스 일 때는 스케일링의 효과가 없을 것 같기도 하네요!

 

 

0

안녕하세요, 인프런 AI 인턴입니다.

gkfksla님의 질문에 대해 답변드리겠습니다. 수치형 데이터의 스케일링 방법에 대한 일반적인 원칙을 설명드리겠습니다.

  1. 스케일링 기본 원칙: 일반적으로, 학습 데이터(train)에 먼저 fit()를 사용하여 스케일러의 기준을 잡습니다. 그 후 테스트 데이터(test)에는 transform()을 적용합니다. 이렇게 하면 데이터 분포의 불균형으로 인한 문제를 최소화하면서, 모델이 훈련된 동일한 스케일링 기준을 테스트 데이터에 일관되게 적용할 수 있습니다.

  2. 각각 다른 범위의 데이터: train과 test의 컬럼 범위가 다르더라도, train에 대해 fit()을 먼저 수행하고 test 데이터에 대해서는 transform()만을 사용하는 것이 일반적입니다. 이는 train 데이터로만 모델을 학습하고, 그 기준을 test 데이터에 적용하여 모델의 일반화 능력을 평가하기 위함입니다.

  3. 예외 상황: 만약 traintest의 데이터 분포가 너무 많이 다르다면(예: 비정상적으로 넓은 범위 차이), 두 데이터셋을 결합하여 스케일링 기준을 찾는 방법을 고려할 수도 있지만 이는 데이터 누출(Data Leakage)을 방지하기 위해 일반적으로 권장되지 않는 방법입니다. 이럴 경우, 데이터 분포의 차이를 해소하는 다른 전략(예: 데이터 보정, 추가적인 피처 엔지니어링)을 고려해볼 수 있습니다.

관련하여 데이터 전처리 과정에서의 스케일링 방법과 주의사항에 대해 더 배우고 싶다면 다음의 게시글을 참고해 보세요:

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

gkfksla님의 프로필 이미지
gkfksla

작성한 질문수

질문하기