인프런 커뮤니티 질문&답변

p0qmp0q님의 프로필 이미지
p0qmp0q

작성한 질문수

[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)

피처 엔지니어링

데이터 합치기

작성

·

54

0

  • 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!

  • 질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요

  • 먼저 유사한 질문이 있었는지 검색해보세요

 

image.png

 

  • 분리한 데이터 다시 합침에서 결과가

(29304, 15), (3257, 15)로 나오는데요

강의랑 달라서 뭐가 잘못된 건지 여쭤봅니다.

 

  • train, test 합쳐서 인코딩 후 분리하기 결과가

     

(29304, 15) , (3257, 15)

(29304, 99), (29304, 99)로 나오는데요

강의랑 달라서 뭐가 잘못된 건지 여쭤봅니다.

 

 

 

 

 

답변 2

0

퇴근후딴짓님의 프로필 이미지
퇴근후딴짓
지식공유자

코드를 확인해보니

다시 분리할때 train과 test를 구분해서 나누는 것이 아니리 똑같은 코드를 적용했네요

iloc를 다시 한번 확인부탁드려요

0

안녕하세요, 인프런 AI 인턴입니다. p0qmp0q님, 질문해 주신 내용에 대해 도와드리겠습니다.

질문하신 내용을 보면, 데이터 전처리 과정에서 traintest 데이터 세트를 합쳐서 인코딩한 후 분리하는 과정에서 발생한 문제인 것으로 보입니다. 주로 이러한 문제는 One-Hot Encoding을 수행할 때 traintest 데이터의 범주형 변수들이 다르게 인코딩되어 발생합니다. 이러한 상황에서는 pd.get_dummies() 함수를 사용하는 과정에서 열의 수가 일치하지 않아 두 데이터 프레임의 최종 열의 수가 다르게 나타날 수 있습니다.

이 문제를 해결하기 위한 몇 가지 방법을 제안드립니다:

  1. 데이터 병합 및 인코딩 후 분리: traintest 데이터 세트를 먼저 병합한 후 One-Hot Encoding을 적용하면, 두 데이터 세트에 동일한 범주형 컬럼들이 일관되게 인코딩됩니다. 이를 통해 traintest 데이터 세트의 컬럼 수를 일관되게 유지할 수 있습니다. 병합한 데이터를 pd.get_dummies()로 인코딩한 후, 다시 원래의 traintest로 분리하는 방식이 올바른 접근입니다.

  2. 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을 안내드립니다:

이 게시물들은 데이터 전처리, 데이터 병합 및 분리에 대한 자세한 설명을 제공하며, 유사한 문제를 해결한 사례를 포함하고 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

p0qmp0q님의 프로필 이미지
p0qmp0q

작성한 질문수

질문하기