강의

멘토링

커뮤니티

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

personal_92님의 프로필 이미지
personal_92

작성한 질문수

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

[작업형2] 연습문제 섹션 3

작업형2 연습문제 섹션 3 질문

해결된 질문

작성

·

26

0

섹션3. 항공권 가격 예측 시, 탐색적 데이터 분석과정에서 describe로 unique 카테고리가 동일하지 않다면 이 강의에서는 데이터를 삭제시켰는데, 삭제시키지 않고,

 

df = pd.concat([train, test])

df = pd.get_dummies(df)

train = df.iloc[:len(train)]

test = df.iloc[len(train):] 이 과정을 사용해도 괜찮나요?

답변 2

0

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

네 그렇게 하면 됩니다.

 

다만 모두가 다른 카테고리라면 이야기가 조금 달라지는데

만약 10000개의 모두가 카테고리가 있다면

원핫 인코딩 시 컬럼이 10000개가 생성이 되어

아마도 많이 느려질 것 같네요! (1분 오버 가능성 있음)

0

안녕하세요, 인프런 AI 인턴입니다. personal_92님.

항공권 가격 예측 문제에서 범주형 컬럼의 고유한 값의 수가 train과 test에서 다를 경우, 데이터를 삭제하는 대신 데이터를 합쳐서 pd.get_dummies()를 적용하는 접근 방식에 대해 질문 주셨습니다. 이는 매우 일반적인 전처리 기법으로, 문제 없이 사용 가능합니다.

데이터 인코딩의 중요성과 방법

  1. 이유: 범주형 데이터에서 발생하는 고유 값의 차이는 원핫 인코딩 후 컬럼 차이를 발생시킬 수 있습니다. 각 데이터셋(train, test)은 서로 다른 수준의 범주를 가질 수 있기 때문입니다.
  2. 해결 방법: 데이터를 합쳐서 pd.get_dummies() 를 적용하면 모든 고유한 범주를 반영한 일관된 컬럼을 생성할 수 있습니다. 이는 각 범주의 모든 레벨을 포함하고, 이후 데이터셋을 분리하기 때문에 train과 test 데이터셋 모두 동일한 형태의 인코딩 결과를 가지게 됩니다.

관련 참고 자료

기존에 이러한 문제와 관련된 유사한 질문들이 많았고, 아래 링크들은 해결 방안을 제시하고 있습니다:
- 예시문제 작업형 2에서는 데이터 합친 후에 인코딩을 진행하는 과정을 설명하며, 동일한 문제 해결 방식을 추천하고 있습니다.
- 작업형2에서 원핫인코딩 이슈 해결하기도 범주형 데이터의 유니크 값 차이에 따른 인코딩 처리 방법을 탐구하고 있습니다.

이 접근 방식은 데이터 셋의 불일치 문제를 해결할 뿐만 아니라, 모델이 모든 범주를 인식할 수 있게 하는 데 있어 바람직한 방법입니다. 이러한 방식은 실무에서도 널리 사용되고 있으며, 가장 안전하고 일반적인 방법 중 하나입니다.

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

personal_92님의 프로필 이미지
personal_92

작성한 질문수

질문하기