给定一个 lgb.Booster 对象,返回特定数据集上特定指标的评估结果。

lgb.get.eval.result(
  booster,
  data_name,
  eval_name,
  iters = NULL,
  is_err = FALSE
)

参数

booster

lgb.Booster 类的对象

data_name

要返回评估结果的数据集名称。

eval_name

要返回结果的评估指标名称。

iters

一个整数向量,包含你想要获取评估结果的迭代次数。如果为 NULL(默认值),则返回所有迭代的评估结果。

is_err

如果为 TRUE,则返回评估误差

返回值

评估结果的数值向量

示例

# \donttest{
# train a regression model
data(agaricus.train, package = "lightgbm")
train <- agaricus.train
dtrain <- lgb.Dataset(train$data, label = train$label)
data(agaricus.test, package = "lightgbm")
test <- agaricus.test
dtest <- lgb.Dataset.create.valid(dtrain, test$data, label = test$label)
params <- list(
  objective = "regression"
  , metric = "l2"
  , min_data = 1L
  , learning_rate = 1.0
  , num_threads = 2L
)
valids <- list(test = dtest)
model <- lgb.train(
  params = params
  , data = dtrain
  , nrounds = 5L
  , valids = valids
)
#> [LightGBM] [Info] Auto-choosing row-wise multi-threading, the overhead of testing was 0.001022 seconds.
#> You can set `force_row_wise=true` to remove the overhead.
#> And if memory is not enough, you can set `force_col_wise=true`.
#> [LightGBM] [Info] Total Bins 232
#> [LightGBM] [Info] Number of data points in the train set: 6513, number of used features: 116
#> [LightGBM] [Info] Start training from score 0.482113
#> [LightGBM] [Warning] No further splits with positive gain, best gain: -inf
#> [1]:  test's l2:6.44165e-17 
#> [LightGBM] [Warning] No further splits with positive gain, best gain: -inf
#> [2]:  test's l2:1.97215e-31 
#> [LightGBM] [Warning] No further splits with positive gain, best gain: -inf
#> [3]:  test's l2:0 
#> [LightGBM] [Warning] No further splits with positive gain, best gain: -inf
#> [LightGBM] [Warning] Stopped training because there are no more leaves that meet the split requirements
#> [4]:  test's l2:0 
#> [LightGBM] [Warning] No further splits with positive gain, best gain: -inf
#> [LightGBM] [Warning] Stopped training because there are no more leaves that meet the split requirements
#> [5]:  test's l2:0 

# Examine valid data_name values
print(setdiff(names(model$record_evals), "start_iter"))
#> [1] "test"

# Examine valid eval_name values for dataset "test"
print(names(model$record_evals[["test"]]))
#> [1] "l2"

# Get L2 values for "test" dataset
lgb.get.eval.result(model, "test", "l2")
#> [1] 6.441652e-17 1.972152e-31 0.000000e+00 0.000000e+00 0.000000e+00
# }