작성
·
65
0
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요
먼저 유사한 질문이 있었는지 검색해보세요
분리한 데이터 다시 합침에서 결과가
(29304, 15), (3257, 15)로 나오는데요
강의랑 달라서 뭐가 잘못된 건지 여쭤봅니다.
train, test 합쳐서 인코딩 후 분리하기 결과가
(29304, 15) , (3257, 15)
(29304, 99), (29304, 99)로 나오는데요
강의랑 달라서 뭐가 잘못된 건지 여쭤봅니다.
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다. p0qmp0q님, 질문해 주신 내용에 대해 도와드리겠습니다.
질문하신 내용을 보면, 데이터 전처리 과정에서 train
과 test
데이터 세트를 합쳐서 인코딩한 후 분리하는 과정에서 발생한 문제인 것으로 보입니다. 주로 이러한 문제는 One-Hot Encoding
을 수행할 때 train
과 test
데이터의 범주형 변수들이 다르게 인코딩되어 발생합니다. 이러한 상황에서는 pd.get_dummies()
함수를 사용하는 과정에서 열의 수가 일치하지 않아 두 데이터 프레임의 최종 열의 수가 다르게 나타날 수 있습니다.
이 문제를 해결하기 위한 몇 가지 방법을 제안드립니다:
데이터 병합 및 인코딩 후 분리: train
과 test
데이터 세트를 먼저 병합한 후 One-Hot Encoding
을 적용하면, 두 데이터 세트에 동일한 범주형 컬럼들이 일관되게 인코딩됩니다. 이를 통해 train
과 test
데이터 세트의 컬럼 수를 일관되게 유지할 수 있습니다. 병합한 데이터를 pd.get_dummies()
로 인코딩한 후, 다시 원래의 train
과 test
로 분리하는 방식이 올바른 접근입니다.
missing columns 처리: train
또는 test
데이터셋에 특정 열이 존재하지 않는 경우가 있습니다. 이 경우, 생성된 데이터 프레임(train
또는 test
)에서 해당 열을 추가하고 0으로 값을 채워 일관성을 유지할 수 있습니다. 예를 들어,
missing_cols = set(train.columns) - set(test.columns)
for col in missing_cols:
test[col] = 0
test = test[train.columns]
질문 주신 내용을 참고하면, 아마도 범주형 데이터가 One-Hot Encoding
과정에서 다르게 처리되어 열의 수에 차이가 발생한 것으로 보입니다. 위의 방법들을 통해 데이터 프레임의 열 수를 일관되게 조정하면 문제를 해결할 수 있을 것입니다.
관련하여 도움이 될 수 있는 답변 URL을 안내드립니다:
이 게시물들은 데이터 전처리, 데이터 병합 및 분리에 대한 자세한 설명을 제공하며, 유사한 문제를 해결한 사례를 포함하고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.