The wrapper works only if both the wrapper and the original evaluation metric are existing. Requires Matrix
and lightgbm
packages.
lgb.wrap.metric(f, name, higher_better = FALSE)
f | Type: function. The function to wrap from LightGBM. Requires the following order of arguments for the function to work: |
---|---|
name | Type: character. The evaluation metric name which is printed and used for LightGBM variables. |
higher_better | Type: logical. Whether a higher value means it is better. Defaults to |
The wrapping function.
# Note: this example unexpectedly fails when using pkgdown. library(lightgbm) library(Matrix) data(agaricus.train, package = "lightgbm") train <- agaricus.train dtrain <- lgb.Dataset(train$data, label = train$label) evalerror <- function(preds, labels) { return(mean(abs(preds - labels))) } evalerror_wrap <- lgb.wrap.metric(f = evalerror, "mae", FALSE) params <- list(learning_rate = 1, min_data = 1, nthread = 1) set.seed(1) model <- lgb.cv(params, dtrain, 2, nfold = 5, objective = "regression", eval = evalerror_wrap)#> Error in evalerror(preds, lightgbm::getinfo(dtrain, "label")): could not find function "evalerror"