강의

멘토링

커뮤니티

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

오승택님의 프로필 이미지
오승택

작성한 질문수

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

8회 기출유형(작업형2)

8회 작업형2 질문

해결된 질문

작성

·

22

0

image.png

원래는 drop을 하지 않고도 빅이시에서 말씀하신대로 돌리면 제대로 돌아갔는데 8회회귀는

위의 이미지대로 customerID쪽의 문제라고 에러문제가 나옵니다.

실제 시험장에서는 오류가 발생하면 오류메세지를 통해 customerID컬럼인것을 인지하고

이후 드랍을 진행하는 방식을 하면 될까요?(EDA를 하지않는다고 가정할때입니다.)

답변 2

1

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

8회 실제 시험에서는 customerID 같은 컬럼은 없었습니다.

기출이 연속으로 평이하게 출제되어 제가 임의로 어렵게 수정하였어요!!

 

네, EDA를 하지 않는다면

  1. 에러 발생한다.

    1. 합쳐서 인코딩 해본다

  2. 그래도 에러 발생 또는 1분 내 소화 불가능 한다.

    1. 제출이 우선이니 컬럼 삭제도 검토 한다.

0

안녕하세요, 인프런 AI 인턴입니다. 오승택님, 질문해 주신 내용에 대해 답변 드리겠습니다.

이번 질문에서는 customerID 컬럼이 원인이 되어 발생하는 오류에 대해 고민하고 계신 것 같습니다. 이미지에서 언급된 ValueError는 실제로 train과 test 데이터 간의 feature 이름이 맞지 않을 때 발생할 수 있습니다. 이는 데이터 전처리, 특히 인코딩 과정에서 자주 발생합니다.

문제의 핵심

  1. 유니크한 식별자 컬럼: customerID 같은 컬럼은 각 데이터를 고유하게 식별하는 용도로, 일반적으로 분석이나 모델 학습에는 직접적인 영향을 주지 않기 때문에 제거하는 것이 좋습니다.

  2. 인코딩 과정에서의 차이: 주로 pd.get_dummies()를 통해 원핫 인코딩을 진행할 때, train 데이터셋에 존재하지만 test 데이터셋에 존재하지 않는 값이 있다면, 컬럼 불일치 문제가 발생할 수 있습니다.

해결 방법

  • Feature Consistency: train과 test 데이터가 동일한 feature 세트를 갖도록 보장해야 합니다. customerID와 같은 식별자 컬럼은 통상적으로 분석 대상에서 제외되기 때문에 드롭(drop)하는 것이 일반적입니다.

  • 데이터 병합 후 인코딩: 인코딩 대상 컬럼이 많고, 그 구조가 복잡하다면 train과 test를 병합하여 인코딩 후 다시 분리하는 방법이 효과적입니다:

# 데이터 병합
df_all = pd.concat([train, test], axis=0)

# 원핫 인코딩
df_all_encoded = pd.get_dummies(df_all)

# 데이터 분리
train_encoded = df_all_encoded[:len(train)]
test_encoded = df_all_encoded[len(train):]

시험장에서의 대처 방법

시험 중이라면, 오류 메시지를 통해 어떤 컬럼이 문제인지를 빨리 파악하고 해당 컬럼이 학습 및 예측에 불필요하다면 삭제하는 방법으로 대처할 수 있습니다. 주어진 시간이 제한적이므로 빠르게 컬럼을 정리하여 모델링을 진행하는 연습이 필요합니다.

관련된 유사한 질문은 아래 링크에서 참고하실 수 있습니다:
- 기출 8회 작업형 2 질문

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

오승택님의 프로필 이미지
오승택

작성한 질문수

질문하기