해결된 질문
작성
·
421
·
수정됨
답변 2
2
개인적인 공부 차원에서 커뮤니티 글 보면서 학습 중인 수강생입니다.
train과 test 모두 fitting 시키는 건 잘 모르겠는데
fit_transform과 transform 과정에 대해 선생님이 알려주신 내역을 전달 드리면
Train 데이터에는 fit_transform 함수(fit와 transform을 2개 합쳐 놓음)
Test 데이터에는 transform 함수를 사용하는데,
fit는 Train 데이터에 있는 숫자가 아닌 범주형 변수(ex. 자동차, 기차 등)를 학습하고
자동차는 0, 기차는 1이라는 라벨을 만드는 과정이고, transform은 '자동차' 라는 문자를 숫자 '0'에 적용하는 단계라고 보시면 될 거 같습니다.
train 데이터에서는 범주형 변수에 대한 라벨(자동차: 0 , 기차: 1)을 이미 만들었으니 (fit 과정),
test 데이터에서는 train에서 만든 라벨을 숫자로 변환하는 과정만 필요하므로, transform만 적용한다고 보시면 됩니다.
1
Jason님이 남겨 준 댓글이 맞아요!
보통은 train데이터에서는 fit과 transform을 사용하고,
test 데이터에는 transform만 사용하여 train데이터와 동일하게 변환 작업을 합니다.
X_train 과 X_test 데이터를 모두 fit하는 것은 합쳐서 하는 것이 아니라 각각 했을 때
문제가 있어요! 컬럼(카테고리)의 수가 다르다면 다른 결과로 각각 인코딩 됩니다.
따라서
레이블 인코딩 시
X_train은 fit_transform 시키고 X_test는 Transform만 시키는 방식
또는 합쳐서 fit_transform 방식 중에 선택해서 작업해주세요!
## train과 test 특정 범주형 컬럼의 카테고리가 다를 때
- train이 test를 포함한다면: 레이블 인코딩, 사이킷런 원핫인코딩, train+test 합쳐서 인코딩
- test가 train을 포함한다면: train+test 합쳐서 인코딩
두 범주의 카테고리를 비교하기 힘들다면 아래 방식처럼 해도 될까요?
*방금 수업 듣고 왔습니다. 수업내용에 잘 정리되어 있었네요. 감사합니다.