一、问题
熟悉xgboost的小伙伴都知道,它在训练模型时,有train()方法和fit()方法,两种方法都是用于构建模型的,然而在使用过程中有什么不同的地方呢,这篇文章带领大家一起来看一下。train方法使用如下:
params ={'eta': 0.1,
'max_depth': 4,
'num_boost_round':20,
'objective': 'reg:logistic',
'random_state': 27,
'silent':0
}
model = xgb.train(params,xgb.DMatrix(x_train, y_train))
train_pred=model.predict(xgb.DMatrix(x_test))
而fit方法是直接使用xgboost封装好的XGBClassifier或者XGBRegressor时使用:
model = XGBClassifier(
learning_rate=0.1,
n_estimators=20,
max_depth=4,
objective='binary:logistic',
seed=27,
silent=0
)
model.fit(x_train,y_train,verbose=True)
fit_pred=model.predict(x_test)
print fit_pred
相同的数据集,相同的参数得到的预测值却是不一样的,fit_pred的值是0,1的具体的预测标签,train_pred的值是0-1之间的概率值;为什么结果是不一样的呢?如何把0-1之间的概率值映射成0,1标签呢?这个后面揭晓,我们先看下,xgboost中用于做逻辑回归的objective的参数都有哪些,得到预测结果有什么不同!
二、objective参数比较
xgboost官方文档关于逻辑回归objective有三个参数,如下: