인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

찌찌찌누님의 프로필 이미지

작성한 질문수

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

모델링 및 평가(회귀)

원핫인코딩 에러

작성

·

38

0

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

  • 세요

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

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

train = pd.get_dummies(train, columns=cols)
test = pd.get_dummies(test, columns=cols)
display(train.head(2))
display(test.head(2))
KeyError                                  Traceback (most recent call last)
<ipython-input-52-5da4ae8d05fa> in <cell line: 0>()
      1 # 원핫 인코딩
----> 2 train = pd.get_dummies(train, columns=cols)
      3 test = pd.get_dummies(test, columns=cols)
      4 display(train.head(2))
      5 display(test.head(2))


3 frames


/usr/local/lib/python3.11/dist-packages/pandas/core/indexes/base.py in _raise_if_missing(self, key, indexer, axis_name)
   6247         if nmissing:
   6248             if nmissing == len(indexer):
-> 6249                 raise KeyError(f"None of [{key}] are in the [{axis_name}]")
   6250 
   6251             not_found = list(ensure_index(key)[missing_mask.nonzero()[0]].unique())

KeyError: "None of [Index(['sex', 'smoker', 'region'], dtype='object')] are in the [columns]"

답변 2

0

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

cols 변수에 있는 컬럼이 train에 없는 것 같아요. 아래 코드를 사용해 컬럼명을 비교해 주세요!

print(cols)
print(train.columns)

그리고

train = pd.get_dummies(train) -> 이런 방식으로 진행해 보시겠어요?

자동으로 범주형만 선택해 인코딩 합니다 🙂

 

0

인프런 AI 인턴님의 프로필 이미지

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

KeyError는 원핫 인코딩을 수행할 때 존재하지 않는 컬럼을 대상으로 실행하려고 할 때 발생하는 오류입니다. 이는 주로 컬럼의 이름이 잘못되었거나, 지정된 컬럼이 데이터프레임에 존재하지 않을 때 발생합니다.

현재 상황에서 문제가 발생한 이유를 다음과 같이 추정할 수 있습니다:
1. cols 변수에 지정된 컬럼들이 traintest 데이터프레임에 실제로 존재하지 않기 때문에 오류가 발생합니다.

  1. train이나 test 데이터프레임에 원핫 인코딩을 수행할 유의미한 범주형 변수가 없을 수도 있습니다.

해결 방법으로는 다음의 방법을 시도해 보세요:
- cols 내에 존재하는 모든 컬럼이 traintest 데이터프레임에 존재하는지 확인합니다. cols 변수를 출력하여 실제 컬럼 명을 일일이 확인해 보세요.

  • 데이터셋을 로드한 이후, 제대로 traintest 데이터프레임으로 할당되었는지 확인해 보시고, 혹시 데이터셋에 문제가 있을 수 있습니다.

아래 유사한 질문과 답변들을 참고하시면 도움이 될 수 있습니다:
- 원핫인코딩에 관한 유사 질문
- pd.get_dummies(train[cols])와 관련된 질문

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