From 78efa13d418fa7c4865f845f7eea280862133bd4 Mon Sep 17 00:00:00 2001 From: tqchen Date: Wed, 1 Oct 2014 09:20:06 -0700 Subject: [PATCH] add example with additional attr --- R-package/demo/custom_objective.R | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/R-package/demo/custom_objective.R b/R-package/demo/custom_objective.R index 9b0d45465..6a2f34c15 100644 --- a/R-package/demo/custom_objective.R +++ b/R-package/demo/custom_objective.R @@ -37,3 +37,26 @@ print ('start training with user customized objective') # training with customized objective, we can also do step by step training # simply look at xgboost.py's implementation of train bst <- xgb.train(param, dtrain, num_round, watchlist, logregobj, evalerror) + +# +# there can be cases where you want additional information +# being considered besides the property of DMatrix you can get by getinfo +# you can set additional information as attributes if DMatrix + +# set label attribute of dtrain to be label, we use label as an example, it can be anything +attr(dtrain, 'label') <- getinfo(dtrain, 'label') +# this is new customized objective, where you can access things you set +# same thing applies to customized evaluation function +logregobjattr <- function(preds, dtrain) { + # now you can access the attribute in customized function + labels <- attr(dtrain, 'label') + preds <- 1/(1 + exp(-preds)) + grad <- preds - labels + hess <- preds * (1 - preds) + return(list(grad = grad, hess = hess)) +} + +print ('start training with user customized objective, with additional attributes in DMatrix') +# training with customized objective, we can also do step by step training +# simply look at xgboost.py's implementation of train +bst <- xgb.train(param, dtrain, num_round, watchlist, logregobjattr, evalerror)