인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

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

ji_nhee님의 프로필 이미지
ji_nhee

작성한 질문수

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

작업형2 모의문제1

작업형2 모의문제1 에서 오류가 발생하는데 원인을 모르겠습니다

해결된 질문

작성

·

582

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

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

  1. train에 label 값이 제거되지 않고 그대로 들어가있습니다. 검증데이터를 나누기 전에 Attrition_Flag를 제거해줘야 해요

  2. 그래서 X_tr은 컬럼수가 20개이고 test는 컬럼수가 19개여서 에러가 발생합니다.

ji_nhee님의 프로필 이미지
ji_nhee
질문자

헉 그렇군요 빠른 답변 감사드립니다 ㅠㅠ

ji_nhee님의 프로필 이미지
ji_nhee

작성한 질문수

질문하기