sklearn에서 fit과 transform을 나누는 이유

SeongGyun Hong·2024년 11월 20일
0

데이터 분석

목록 보기
3/11

1. fit()transform()의 역할

  • fit(): 데이터를 보고 기준(평균, 표준편차 등)을 학습.
    (훈련 데이터에서만 사용, 테스트 데이터는 제외)
  • transform(): 학습된 기준을 사용해 데이터를 변환.

2. 왜 나누는가?

  • 데이터 누수 방지: 테스트 데이터를 fit()하면 평가 왜곡.
    (모델이 미리 정답을 힌트받는 셈)
  • 일관성 유지: 학습된 기준을 재사용해 변환.
    (훈련 데이터와 테스트 데이터가 같은 기준으로 처리됨)

실제 상황에서의 문제점: 테스트 데이터에 fit()하는 경우

훈련 데이터와 테스트 데이터를 서로 다른 기준으로 변환하게 됨.
→ 테스트 데이터에 "정답 힌트"를 주는 것과 동일.
→ 모델이 과적합되고, 실제 성능을 왜곡해서 높은 점수를 부여.
(현실에서는 엉망이지만 테스트에서는 우수하게 보이는 상태)


  • fit()은 기준을 정하는 과정: 작년 시험을 보고 기준을 설정.
  • transform()은 기준에 따라 데이터 처리: 올해 시험을 채점.
  • 나누지 않으면 기준이 오락가락하고, 평가가 공정하지 않음!
profile
헤매는 만큼 자기 땅이다.

0개의 댓글