fromxgboostimportXGBClassifierfromsklearn.metricsimportroc_auc_score# 원래 여기 데이터에는 검증 데이터를 넣어야함 Test 데이터 넣으면 안됨!# 검증 데이터 넣어주어서 교차검증 해보도록하기evals=[(x_test,y_test)]xgb_wrapper=XGBClassifier(n_estimators=100,learning_rate=0.1,max_depth=3)# eval_metric넣어주면서 검증 데이터로 loss 측정할 때 사용할 metric 지정xgb_wrapper.fit(x_train,y_train,early_stopping_rounds=200,eval_set=evals,eval_metric='auc')# Prediction 1print('Train Score : {}'.format(xgb_wrapper.score(X_train,y_train)))print('Test Score : {}'.format(xgb_wrapper.score(X_test,y_test)))# Prediction 2preds=xgb_wrapper.predict(x_test)preds_proba=xgb_wrapper.predict_proba(x_test)[:,1]print(preds_proba[:10])# 모델 평가xgb_roc_score=roc_auc_score(y_test,xgb_wrapper.predict_proba(X_test)[:,1])
XGBoost는 누락 값에 대해서 어떻게 대응할 지 알아서 정하도록 설정되어 있다. 따라서 우리가 해줘야 되는 가공 작업은 단순히 누락값을 전부 0으로 바꿔주는 것이다.
1
2
3
4
5
6
7
8
# 누락된 값이 있는 행의 개수 = 누락 데이터 개수len(df.loc[df['Total_Charges']==' '])# 누락된 행 직접보기df.loc[df['Total_Charges']==' ']# 직접 바꾸기df.loc[(df['Total_Charges']==' '),'Total_Charges']=0