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

은영조님의 프로필 이미지
은영조

작성한 질문수

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

작업형2 모의문제3

predict_proba(test)에서 오류가 나요

해결된 질문

작성

·

19

0

혼자 문제를 풀어보고 있는데요

 

스크린샷 2024-11-28 오후 2.38.42.png.webp

여기서 마지막에 평가할때 pred=rf.predict_proba(test) 에서 계속 오류가 납니다..

스크린샷 2024-11-28 오후 2.39.44.png.webp

이렇게 오류가 나는 이유가 뭘까요,,,

원래 하던데로 그대로 하고 있는데요ㅠ

문제가 roc로 평가하는거라서 predict_proba로 하고 있어요

답변 3

0

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

주구매상품 train과 test 카테고리가 달라서 그렇습니다.

  • 예시문제 풀이 영상(레이블 인코딩 처리)과

  • 꿀팁 섹션 - 인코딩시 에러가 난다면 (합쳐서 인코딩 처리)

  • 어제 올린 "새소식" 확인 부탁드립니다.

     

    image.png

     

 

0

은영조님의 프로필 이미지
은영조
질문자

이해가 잘 안돼요,,여태까지 푼 모의고사는 그럼 데이터셋와 테스트 데이터셋의 특성이 다 일치했던건가요?

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

기출은 카테고리가 모두 같았습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 은영조님께서 질문하신 predict_proba(test) 단계의 문제는 주로 학습 데이터셋과 테스트 데이터셋 간의 특성 불일치로 인해 발생합니다. 이 문제는 테스트 데이터셋에 학습 시점의 특성과 동일한 이름과 수의 특성이 포함되어야 하기 때문에 생깁니다. 이에 대한 해결책을 제시합니다.

문제의 원인

  1. 특성 불일치: train 데이터와 test 데이터의 특성(컬럼) 수가 다르거나, 특성의 이름이 불일치하여 발생하는 문제입니다.
  2. 데이터 전처리: pd.get_dummies() 같은 인코딩 과정에서 발생할 수 있는 오류로, traintest가 같은 범주의 열을 유지하지 못하게 되어 버립니다.

해결 방법

  1. Combine and Encode: traintest 데이터를 결합 후 인코딩하여 동일한 특성 수와 이름을 유지하도록 합니다. 인코딩 후, 두 데이터를 분리한 후에도 동일한 특성을 유지하게 됩니다.

    combined = pd.concat([train, test], axis=0, sort=False)
    combined = pd.get_dummies(combined)
    train = combined[:len(train)]  # Train 데이터로 복원
    test = combined[len(train):]   # Test 데이터로 복원
    
  2. 확인 및 수정: 모델 학습 전후로 변수의 수와 순서가 동일해야 합니다. 이를 위해 traintest의 특성을 비교하고, 빠진 특성은 0으로 채워 추가하십시오.

유사한 문제 해결 게시글

아래 게시글에서 유사한 문제를 해결하는 방법을 찾을 수 있습니다:

위 링크에서는 특성 불일치와 관련된 다양한 케이스와 해결책이 공유되어 있으니 참고하시기 바랍니다.

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

은영조님의 프로필 이미지
은영조

작성한 질문수

질문하기