The wrapper works only if both the wrapper and the original evaluation metric are existing. Requires Matrix and xgboost packages.

xgb.wrap.metric(f, name)

Arguments

f

Type: function. The function to wrap from xgboost. Requires the following order of arguments for the function to work: preds, labels, and returns a single value.

name

Type: character. The evaluation metric name which is printed and used for xgboost variables.

Value

The wrapping function.

Examples

# Note: this example unexpectedly fails when using pkgdown. library(xgboost) library(Matrix) data(agaricus.train, package = "xgboost") data(agaricus.test, package = "xgboost") dtrain <- xgboost::xgb.DMatrix(agaricus.train$data, label = agaricus.train$label) dtest <- xgboost::xgb.DMatrix(agaricus.test$data, label = agaricus.test$label) watchlist <- list(train = dtrain, eval = dtest) evalerror <- function(preds, labels) { return(mean(abs(preds - labels))) } evalerror_wrap <- xgb.wrap.metric(f = evalerror, "mae") param <- list(max_depth = 2, eta = 1, silent = 1, nthread = 1, objective = "binary:logistic", eval_metric = evalerror_wrap) bst <- xgboost::xgb.train(param, dtrain, nrounds = 2, watchlist)
#> Error in evalerror(preds, xgboost::getinfo(dtrain, "label")): could not find function "evalerror"