Эта функция модели моделирования часто используется, я обнаружил, что она использовала здесь в IBM.Но я покажу функцию здесь:
def evaluate_model(alg, train, target, predictors, useTrainCV=True , cv_folds=5, early_stopping_rounds=50):
if useTrainCV:
xgb_param = alg.get_xgb_params()
xgtrain = xgb.DMatrix(train[predictors].values, target['Default Flag'].values)
cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()['n_estimators'], nfold=cv_folds,
metrics='auc', early_stopping_rounds=early_stopping_rounds, verbose_eval=True)
alg.set_params(n_estimators=cvresult.shape[0])
#Fit the algorithm on the data
alg.fit(train[predictors], target['Default Flag'], eval_metric='auc')
#Predict training set:
dtrain_predictions = alg.predict(train[predictors])
dtrain_predprob = alg.predict_proba(train[predictors])[:,1]
#Print model report:
print("\nModel Report")
print("Accuracy : %.6g" % metrics.accuracy_score(target['Default Flag'].values, dtrain_predictions))
print("AUC Score (Train): %f" % metrics.roc_auc_score(target['Default Flag'], dtrain_predprob))
plt.figure(figsize=(12,12))
feat_imp = pd.Series(alg.get_booster().get_fscore()).sort_values(ascending=False)
feat_imp.plot(kind='bar', title='Feature Importance', color='g')
plt.ylabel('Feature Importance Score')
plt.show()
После настройки параметров для XGboost у меня будет
xgb4 = XGBClassifier(
objective="binary:logistic",
learning_rate=0.10,
n_esimators=5000,
max_depth=6,
min_child_weight=1,
gamma=0.1,
subsample=0.8,
colsample_bytree=0.8,
reg_alpha=0.1,
nthread=4,
scale_pos_weight=1.0,
seed=27)
features = [x for x in X_train.columns if x not in ['Default Flag','ID']]
evaluate_model(xgb4, X_train, y_train, features)
, и я получу результаты
Model Report
Accuracy : 0.803236
AUC Score (Train): 0.856995
Вопрос, который у меня возник и, возможно, плохо проинформирован, заключается в том, что эта функция evaulate_model()
не проверяется на тестовом наборе данных, которые я нахожу странными.Когда я вызываю его на тестовом наборе (evaluate_model(xgb4, X_test, y_test, features)
), я получаю это
Model Report
Accuracy : 0.873706
AUC Score (Train): 0.965286
Я хочу знать, относятся ли эти два модельных отчета вообще, учитывая, что тестовый набор имеет более высокую точность, чемОбучающий набор.Приношу свои извинения, если структура этого вопроса плохо представлена.