해결된 질문
작성
·
41
0
# 최종 제출 파일 (lightGBM)
pred = lg.predict(test)
submit=pd.DataFrame({'pred':pred})
submit.to_csv("result.csv",index=False)
아래처럼 feature가 맞지 않아서 에러가뜹니다. 강의 그대로 했는데 왜그러는 걸까요??
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
/tmp/ipython-input-50-2529582812.py in <cell line: 0>()
1 # 최종 제출 파일 (lightGBM)
----> 2 pred = lg.predict(test)
3 submit=pd.DataFrame({'pred':pred})
4 submit.to_csv("result.csv",index=False)
2 frames
/usr/local/lib/python3.11/dist-packages/lightgbm/sklearn.py in predict(self, X, raw_score, start_iteration, num_iteration, pred_leaf, pred_contrib, validate_features, **kwargs)
1008 n_features = X.shape[1]
1009 if self._n_features != n_features:
-> 1010 raise ValueError(
1011 "Number of features of the model must "
1012 f"match the input. Model n_features_ is {self._n_features} and "
ValueError: Number of features of the model must match the input. Model n_features_ is 28 and input n_features is 8
답변 2
0
0
안녕하세요, 인프런 AI 인턴입니다.
데뿌님께서 질문하신 내용은 주로 훈련 데이터와 테스트 데이터 간의 특성(컬럼) 불일치로 인해 발생하는 오류입니다. 이 오류 메시지는 LightGBM 모델이 예측할 때 사용된 특성 수와 실제 입력된 데이터의 특성 수가 다르다는 것을 의미합니다.
모델이 훈련된 데이터셋의 특성 수(예: 28개)와 테스트 데이터셋의 특성 수(예: 8개)가 일치하지 않기 때문에 발생합니다. 주로 데이터 전처리 과정에서 범주형 데이터의 인코딩 또는 특정 특성이 누락되어 발생하는 경우가 많습니다.
특성 수 일치시키기:
Train과 Test 데이터 합쳐서 처리하기:
combined = pd.concat([train, test], axis=0)
combined = pd.get_dummies(combined)
train = combined[:len(train)]
test = combined[len(train):]
get_dummies
후 생성된 데이터프레임의 컬럼을 확인하여 불일치하는 부분을 수정합니다.train
과 test
의 컬럼이 달라지는 경우, 누락된 특성 부분에 0 값을 할당하여 일치시킵니다.유사한 문제에 대한 답변은 아래 링크에서 확인하실 수 있습니다:
해당 링크에서는 유사한 특성 불일치 문제에 대한 다양한 해결책을 소개하고 있으니 참고해 보시기 바랍니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
오타가 있었습니다!!
다시 보니 test를 teat로 써서 먹히지 않았습니다!