27 lines
1.2 KiB
R
27 lines
1.2 KiB
R
require(xgboost)
|
|
# load in the agaricus dataset
|
|
data(agaricus.train, package='xgboost')
|
|
data(agaricus.test, package='xgboost')
|
|
dtrain <- xgb.DMatrix(agaricus.train$data, label = agaricus.train$label)
|
|
dtest <- xgb.DMatrix(agaricus.test$data, label = agaricus.test$label)
|
|
|
|
watchlist <- list(eval = dtest, train = dtrain)
|
|
###
|
|
# advanced: start from a initial base prediction
|
|
#
|
|
print('start running example to start from a initial prediction')
|
|
# train xgboost for 1 round
|
|
param <- list(max_depth=2, eta=1, nthread = 2, objective='binary:logistic')
|
|
bst <- xgb.train(param, dtrain, 1, watchlist)
|
|
# Note: we need the margin value instead of transformed prediction in set_base_margin
|
|
# do predict with output_margin=TRUE, will always give you margin values before logistic transformation
|
|
ptrain <- predict(bst, dtrain, outputmargin=TRUE)
|
|
ptest <- predict(bst, dtest, outputmargin=TRUE)
|
|
# set the base_margin property of dtrain and dtest
|
|
# base margin is the base prediction we will boost from
|
|
setinfo(dtrain, "base_margin", ptrain)
|
|
setinfo(dtest, "base_margin", ptest)
|
|
|
|
print('this is result of boost from initial prediction')
|
|
bst <- xgb.train(params = param, data = dtrain, nrounds = 1, watchlist = watchlist)
|