问题是我在两个模型中收到的分类结果严重不同。
两个包装器的参数都相等。
我猜可能是这个问题: 1)在XGB中,我从简历开始,然后再培训;在SKL中,我从火车开始,并根据培训行为进行简历。 2)在XGB中,我使用Dmatrix,而在SKL中-不。 3)在XGB中,我使用Early_stopping_rounds,但在SKL中则使用-
# XGB wrapper
param = {
...
}
bst_cv = xgb.cv(
...
)
test_auc_mean = bst_cv['test-auc-mean']
best_evaluation = max(test_auc_mean)
best_iteration = test_auc_mean[test_auc_mean == best_evaluation].index[0]
bst = xgb.train(param,
dtrain, #Dmatrix which contains X_train, y_train
num_boost_round = best_iteration)
bst.predict(dtest) #Dmatrix witch contains X_test
# SKL wrapper
xg_cl = xgb.XGBClassifier(
...
)
xg_cl.fit(X_train,
y_train,
...)
xg_cl.predict_proba(X_test)
结果:
在所有积极因素中,否定积极因素: XGB_wrapper(进一步-XGB)-12% Sk_learn_wrapper(进一步-SKL)-16%
所有预测的肯定值中的false_positives: XGB-20% SKL-30%
也就是说,SKL模型的效果更差。