Please look at this answer here
xgboost.train
will ignore parameter n_estimators, while
xgboost.XGBRegressor
accepts. In xgboost.train, boosting iterations
(i.e. n_estimators) is controlled by num_boost_round(default: 10)
It suggests to remove n_estimators
from params supplied to xgb.train
and replace it with num_boost_round
.
So change your params like this:
params = {'objective': 'reg:linear',
'max_depth': 2, 'learning_rate': .1,
'min_child_weight': 3, 'colsample_bytree': .7,
'subsample': .8, 'gamma': 0, 'alpha': 1}
And train xgb.train like this:
model = xgb.train(dtrain=xgtrain, params=params,num_boost_round=500)
And you will get same results.
Alternatively, keep the xgb.train as it is and change the XGBRegressor like this:
model = XGBRegressor(learning_rate =.1, n_estimators=10,
max_depth=2, min_child_weight=3, gamma=0,
subsample=.8, colsample_bytree=.7, reg_alpha=1,
objective="reg:linear")
Then also you will get same results.