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

모레님의 프로필 이미지
모레

작성한 질문수

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

작업형2 마인드맵 🆕 updated 2024.6 (only 자료)

라벨인코딩 후 범주형 데이터가 그대로 남아있는 오류

작성

·

26

0

image.png

라벨인코딩을 진행하였는데 test의 'model' 컬럼이 그대로 범주형으로 변경되지 않네요...

이 후 최종파일을 test로 예측할 때 이 문제로 오류가 발생하는것 같습니다.

답변 2

0

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

이럴 때는 print(cols)로 cols에 무엇이 담겨있는지 확인해 주세요!

model 컬럼이 있어야 합니다.

만약 있는데도 안되었다면 캡쳐 말고 코드로 댓글 부탁드립니다.

코드 작성할 때는 코드 블럭을 사용해 주세요

image.png

 

0

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

모레님께서 말씀하신 문제는 LabelEncoder 를 사용한 후에도 ‘model’ 컬럼이 제대로 인코딩되지 않는 상황으로 보입니다. 이 문제는 컬럼 이름이나 인코딩 과정에서 발생할 수 있는 실수로 인한 것일 가능성이 높습니다.

라벨 인코딩이 제대로 이루어지지 않을 때 확인할 점

  1. 컬럼 참조의 타이포 확인: train['model'] 과 같이 컬럼 이름을 참조할 때 오타가 없는지 확인하세요. 라벨 인코딩이 정상적으로 진행되었다면 모든 값이 수치로 바뀌어야 합니다.

  2. LabelEncoder 초기화: for 루프 안에서 LabelEncoder 객체를 반복적으로 초기화하고 사용하는 경우, fit_transformtransform 메소드가 일관되게 작동하도록 주의해야 합니다. fit_transform 은 학습된 상태로 train 데이터에 대해, transform 은 동일한 상태로 test 데이터에 대해 사용되어야 하며 같은 인코더 객체(le)를 사용해야 합니다.

  3. 인코딩 대상의 일관성: train 데이터에서의 인코딩이 test 데이터에 없는 값을 포함하고 있는지 확인하세요. 이는 test 데이터셋에 없는 새로운 값이 train 에 있는 경우 발생할 수 있는 오류입니다.

  from sklearn.preprocessing import LabelEncoder
  le = LabelEncoder()
  train['model'] = le.fit_transform(train['model'])
  test['model'] = le.transform(test['model'])

위 코드가 어떻게 라벨 인코딩에 사용되는지를 살펴보시면, fit_transform 으로 학습하고 transform 을 할 때 같은 객체(le)를 사용합니다.

추가적으로, 유사한 실수 및 문제 해결에 대한 경험이 담긴 기존 질문에서도 해답을 찾을 수 있습니다: 라벨인코딩 과정 중 발생하는 데이터 변환 이슈 해결 방법

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

모레님의 프로필 이미지
모레

작성한 질문수

질문하기