inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

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

기출 8회 작업형 2 질문

해결된 질문

70

고라니

작성한 질문수 1

0

데이터 전처리 과정에서

train= train.drop('customerID', axis=1)

test = test.drop('customerID', axis=1)

target=train.pop('TotalCharges')

train = pd.get_dummies(train)

test = pd.get_dummies(test)

 

이렇게 customerID를 drop하는 처리 진행 후 인코딩을 해서 학습 평가 까지는 잘 진행이 되는데, 예측단계(pred=rf.predict(test))에서 아래와같은value에러가 뜹니다.

ValueError: The feature names should match those that were passed during fit. Feature names unseen at fit time: - customerID_CUST0001

 

이런 경우는 무조건 train과 test를 하나로 묶어서 원핫인코딩을 진행해야하나요? train, test 각각 개별로 진행하면 안되는 떄의 기준이 궁금합니다.

python 머신러닝 빅데이터 pandas 빅데이터분석기사

답변 2

0

퇴근후딴짓

에러 원인은 train에는 CUST0001 값이 있지만 test에는 없고

원핫인코딩은 카테고리를 모두 컬럼으로 만듭니다.

예를 들어 과일 종류 100가지가 있다고 한다면 인코딩 후엔 모두 컬럼으로 만들어 버리죠!

데이터 수 만큼 모두 유니크한 값이라면 숫자면 그냥 둬도 되지만 문자면 삭제를 권장합니다.

 

에러가 나는 경우

  • train과 test의 카테고리 종류가 다를 때

  • 특히 train에만 있는 값이 test에 없으면 문제가 됨
    → train에서는 그 값의 원핫 컬럼이 생겼기 때문에 모델이 그 컬럼을 기대함
    → test에는 해당 컬럼이 없어 오류 발생

에러가 안 나는 경우

  • train과 test의 카테고리 종류가 완전히 일치할 때

  • 예: 과일 종류가 “사과, 포도, 바나나"로 train과 test 모두 같다면 문제 없음

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다. 고라니님의 질문에 답변 드리겠습니다.

이번 질문에서는 원핫 인코딩 시 발생할 수 있는 차원 또는 열 불일치 문제와 관련된 내용입니다. 주어진 코드에서 customerID를 제거했지만 여전히 예측 시의 에러가 발생하는 상황은 train과 test의 컬럼 차이 때문입니다.

문제의 원인

  1. Train과 Test의 원핫 인코딩 차이: train과 test 데이터셋 각각에 대해 독립적으로 원핫 인코딩을 진행하면, 특정 범주가 train에만 있고 test에는 없거나 그 반대일 수 있습니다. 이런 경우 서로 다른 컬럼 수로 인해 모델이 예측 시 데이터가 맞지 않아 에러가 발생할 수 있습니다.

  2. 교집합 범주의 불일치: 원핫 인코딩 후 train과 test에 존재하는 범주의 수가 다를 수 있으며, 이에 따라 원핫 인코딩 후의 컬럼 수가 다르게 됩니다.

해결책 및 권장 방법

  • 데이터 병합 후 원핫 인코딩: train과 test를 하나로 결합한 뒤 원핫 인코딩을 진행하고, 다시 나눠 사용하는 방법이 안전합니다. 이렇게 하면 인코딩 후로 feature 컬럼의 불일치 문제를 방지할 수 있습니다.
# 데이터 병합
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):]

이렇게 하면 train과 test 모두 동일한 컬럼을 가지게 되어 학습과 예측에 문제가 없어집니다.

참고 자료

유사한 문제와 해결책에 대한 정보는 아래 링크를 참고하시면 도움이 될 것입니다:
- 데이터 병합 후 인코딩 문제 해결

고라니님께 도움이 되었기를 바라며, 추가적으로 궁금한 사항 있으시면 언제든지 질문해 주세요. 곧 지식공유자께서도 답변해 주실 것입니다. 현재는 베타 기능으로 답변의 완벽성을 확신할 수 없는 점에 대해 양해 부탁드립니다. 🙏

감사합니다.

roc_auc_score

0

2

1

추가질문 합니다

0

10

1

시험환경 구름

0

10

1

2유형 질문드려요

0

8

1

RandomForest vs lgb

0

18

1

전처리 관련질문

0

13

2

작업형3 기출

0

12

1

유형2에서 데이터분할 생략 가능여부

0

20

2

9회 기출 유형3 질문

0

15

1

lgb 기초편

0

10

1

괄호 사용

0

15

1

작업형 2 데이터 전처리 질문

0

18

1

11회 기출 유형 작업형1 문제 3-1

0

15

0

예시문제 작업형2 (ver2023) 질문입니다

0

16

1

Data type에 따른 처리

0

15

2

데이터 전처리 관련

0

16

2

시험에서 문제 불러오기

0

18

2

2번문제 출력값 질문

0

23

2

pd.get_dummies()가 bool로 반환

0

18

2

대응표본검정 레빈

0

23

3

단일표본검정 문제 유형

0

23

2

[작업형 3] 6~7. 카이제곱 검정

0

23

2

9회 작업형3 문제 1-1

0

37

2

최종답안 계산 방식 질문

0

25

1