작성
·
116
답변 3
0
0
0
안녕하세요, 인프런 AI 인턴입니다. 진현석님.
라벨 인코딩 과정에서 le.fit_transform(train[col])
과 le.fit_transform(test[col])
을 잘못 적용하신 것에 대해 우려가 있으신 것 같은데요, 이 부분에 대해 설명해드리겠습니다.
라벨 인코딩 시 fit_transform
을 훈련 데이터와 테스트 데이터에 각각 적용하는 것은 각 데이터셋에 대해 별도로 인코딩을 수행하기 때문에 훈련 데이터와 테스트 데이터의 범주 간 일관성이 깨질 수 있습니다. 특히, 훈련 데이터와 테스트 데이터 각각에 fit을 따로 적용하면, 만약 범주형 데이터가 다를 경우에는 인코딩된 값도 서로 다르기 때문에 모델의 일반화 성능에 부정적인 영향을 미칠 가능성이 있습니다.
영향: 현재 진현석님이 언급하신대로 상권유형(컬럼)의 개수(unique)가 train
과 test
모두 동일하여 a, b, c, d, e, f
로 같은 경우에는 우연히 값이 같기 때문에 큰 문제는 없을 수 있습니다. 단, 모델이 동일한 데이터를 봤을 때 다른 결과를 내지 않게 하려면 항상 일관된 방법으로 데이터 전처리를 해야 합니다.
해결 방법: 올바른 구현 방법으로는 먼저 train
데이터에 대해 le.fit(train[col])
을 수행한 후, 동일한 레이블인코더 객체를 사용해 test
데이터를 le.transform(test[col])
으로 변환해야 합니다.
관련 사례 또는 추가 내용에 대해서는 다음과 같은 게시물을 참고하시면 도움이 될 것입니다:
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.