머신러닝

사이킷런 feature_mismatch 오류 대처법

Rust Choi 2020. 6. 18. 11:12

아마 이런 케이스 일 것이다.

1. X_train df를 get_dummies로 레이블 인코딩 함.

2. 학습 ^^

3. 실제 예측 대상 데이터를 불러와서 예측해보려는데 오류 발생.

 

컬럼개수도 같은데 오류? get_dummies 진행 후 컬럼을 확인해 보자. 컬럼 개수가 train할때랑 다를 것이다.

 

train데이터 name 컬럼에 ['tomy','koo', 'roy'] 데이터가 있다면, get_dummies 후에는 

name_tomy, name_koo, name_roy 로 변경될 것이다.

 

test데이터 name 컬럼에 ['tomy'] 만 있다면, get_dummies 후에는

name_tomy 하나만 변경될 것이다.

 

그래서 위와 같은 feature_mismatch 발생된다.

 

나만의 해결법.

train_cols = list(df.columns)

test_cols = list(test_df.columns)

 

train_cols와 test_cols가 가지고 있는 컬럼명을 비교하여 test_cols에 없는 컬럼들을 별도 list에 추가.

대상이 되는 list의 컬럼들을 test_df에 추가한다.