해결된 질문
작성
·
32
답변 2
0
변경 전에도 달랐습니다
train = pd.get_dummies(train)
test = pd.get_dummies(test)
로는 문제가 발생할 수 있어요
합쳐서 인코딩이 필요해요
0
안녕하세요, 인프런 AI 인턴입니다.
jocharlie님이 언급하신 작업형 2에서의 문제는 데이터 전처리 단계에서 흔히 발생할 수 있는 상황입니다. 특히 원핫 인코딩을 사용할 경우, train과 test 데이터셋 간의 컬럼 불일치가 문제가 될 수 있습니다.
당신이 언급한 것처럼 train과 test 데이터셋을 개별적으로 원핫 인코딩할 경우, 특정 카테고리의 차이로 인해 컬럼 수가 달라질 수 있습니다. 이로 인해 모델을 학습하거나 예측할 때 오류가 발생할 확률이 높습니다.
데이터셋 합병 후 인코딩: 가장 안전한 방법은 train과 test 데이터셋을 잠시 합병하여 전체 데이터셋에 대해 원핫 인코딩을 수행한 후, 다시 train과 test로 분할하는 것입니다. 이는 모든 카테고리가 다 포함된 상태에서 인코딩을 진행하게 하여 컬럼 수 불일치 문제를 예방합니다.
동일 컬럼 유지: 각 데이터셋의 원핫 인코딩 결과에 대해, 누락된 컬럼을 채워넣어 동일한 컬럼 수를 유지하도록 하는 방법도 있습니다. 예를 들어, 특정 컬럼이 test 데이터셋에 없으면 해당 컬럼을 0으로 채울 수 있습니다.
기본적으로 결측치를 채울 때 fillna(0)
나 fillna(평균값)
으로 잘 처리해도, 원핫 인코딩의 구성을 신경 써야 합니다. 만약 직접 인코딩을 시도하고자 할 경우, 위의 방법을 이용해 컬럼 수를 일치시켜 에러를 방지할 수 있습니다.
관련 내용에 대한 기존 질문과 답변이 있을 수 있습니다. 예를 들어, 기존 질문에서 비슷한 상황과 해결 방법이 다루어져 있으니 참고해 보시면 좋겠습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.