해결된 질문
작성
·
558
0
import pandas as pd
train = pd.read_csv("train.csv")
test = pd.read_csv("test.csv")
y_test = pd.read_csv("y_test.csv")
from sklearn.preprocessing import LabelEncoder
cols = train.select_dtypes(include = 'object').columns
for col in cols:
le = LabelEncoder()
train[col] = le.fit_transform(train[col])
test[col] = le.transform(test[col])
train = train.drop('CLIENTNUM',axis=1)
test_id = test.pop('CLIENTNUM')
from sklearn.model_selection import train_test_split
X_tr,X_val,y_tr,y_val = train_test_split(train,
train['Attrition_Flag'],
test_size = 0.2,
random_state = 2022)
from xgboost import XGBClassifier
from sklearn.metrics import roc_auc_score,accuracy_score,f1_score,precision_score, recall_score
model = XGBClassifier(random_state=2022)
model.fit(X_tr,y_tr)
pred = model.predict(X_val)
pred
print(accuracy_score(y_val,pred))
print(f1_score(y_val,pred))
print(precision_score(y_val,pred))
print(recall_score(y_val,pred))
pred = model.predict(X_val)
pred
pred = model.predict_proba(test)
pred (여기 과정에서 오류가 생깁니다 ㅠ)
ValueError: Feature shape mismatch, expected: 20, got 19
이렇게 오류가 생기는데 뭐가 잘못된걸까요?ㅠㅠ
답변 1
0
train에 label 값이 제거되지 않고 그대로 들어가있습니다. 검증데이터를 나누기 전에 Attrition_Flag를 제거해줘야 해요
그래서 X_tr은 컬럼수가 20개이고 test는 컬럼수가 19개여서 에러가 발생합니다.
헉 그렇군요 빠른 답변 감사드립니다 ㅠㅠ