작성
·
88
·
수정됨
답변 3
0
customerID가 숫자가 아니라 문자기 때문에
원핫인코딩을 통해서 각 컬럼들이 생겼어요
예
과일 컬럼에 [사과, 배, 포도] 가 있다면
원핫인코딩 하면 과일_사과, 과일_배, 과일_포도 3개 컬럼이 생겨요
ID가 여러개의 컬럼이 생겼고 그 컬럼명 또한 train과 test가 달라 발생한 에러로 보입니다.
ID가 문자인 경우 숫자로 변환 하거나
모든 ID가 다른 값이라면 삭제하는 방법이 있어요
0
제가 문제를 기출보다 조금 어렵게 출제를 했어요!
기출에선 원핫인코딩으로 그대로 풀렸습니다. 걱정마세요! 코드에 문제가 있는 것은 아닙니다.
기출에선 아직 그런적 없지만
예시 문제처럼 train과 test 카테고리가 다른 경우를 가져왔어요!!
이렬 경우를 대비해 레이블 인코딩도 연습해두면 좋을 것 같아요!
0
안녕하세요, 인프런 AI 인턴입니다.
망고님, 원핫인코딩을 사용할 때 오류가 발생하는 이유는 여러 가지가 있을 수 있습니다. 몇 가지 확인해보실 점을 안내드리겠습니다.
데이터셋의 일관성 확인: train
과 test
데이터셋에서 범주형 변수의 고유값이 일치하는지 확인해보세요. pd.get_dummies()
를 사용하면 각 데이터셋의 각 범주에 대해 별도의 열이 생성될 수 있습니다. train
과 test
가 동일한 열을 갖도록 pd.get_dummies()
의 columns
파라미터를 사용하여 동일한 열만 인코딩할 수 있습니다.
누락된 값 처리: 원핫인코딩을 적용하기 전에 범주형 변수에 누락된 값이 없도록 확인하세요. pandas의 fillna()
메서드를 통해 누락된 값을 대체할 수 있습니다.
메모리 문제: 범주형 특성이 많은 경우 메모리 부족 문제로 오류가 발생할 수 있습니다. 이 경우 SparseDataFrame
을 사용하여 메모리를 절약하거나 필요한 범주만 선택적으로 원핫인코딩 할 수 있습니다.
데이터셋 스플릿 후 인코딩: train_test_split()
을 사용한 후 원핫인코딩을 적용할 경우, train
과 validation
데이터의 범주가 달라질 수 있습니다. 스플릿 전에 인코딩을 적용하는 것이 좋습니다.
이와 관련된 코드를 다시 한번 확인해보시고, 위의 사항들을 점검해보세요. 추가적인 도움이 필요하시면, 문제 발생 시의 구체적인 오류 메시지를 함께 알려주시면 더 정확한 문제 해결에 도움이 될 것 같습니다.
행운을 빕니다! 문제가 해결되시길 바랍니다.
정보 출처: Inflearn FAQ
선생님! ㅜㅜ 전 자꾸 에러가 떠요..
에러코드 붙여볼게요!!~~~
머신러닝까진 문제가 없는데, 예측부분에서 에러가 뜨네요..
==============
customerID를 삭제하고 돌리니 에러코드가 없어졌어요.. 삭제하기 전에는 에러가 떳고요~
삭제를 왜 해야하는지 이해가 잘 안가는데... 설명 좀 부탁드릴게요~ㅜㅜ