4

有时我会保存一个 LightGBM 模型,然后在重新加载它时,想要访问有关模型构建方式的一些详细信息。例如,有没有办法恢复这个事实objective = "regression"

为方便起见,这里有一些简短的代码可供使用:

library(lightgbm)
data(agaricus.train, package = "lightgbm")
train <- agaricus.train
dtrain <- lgb.Dataset(train$data, label = train$label)
data(agaricus.test, package = "lightgbm")
params <- list(objective = "regression", metric = "l2")
model <- lgb.train(params,
                   dtrain,
                   100,
                   min_data = 1,
                   learning_rate = 1)
names(model)

我看不到如何从任何模型属性中检索任何模型参数:

> names(model)
 [1] ".__enclos_env__"      "raw"                  "record_evals"         "best_score"          
 [5] "best_iter"            "save"                 "to_predictor"         "predict"             
 [9] "dump_model"           "save_model_to_string" "save_model"           "eval_valid"          
[13] "eval_train"           "eval"                 "current_iter"         "rollback_one_iter"   
[17] "update"               "reset_parameter"      "add_valid"            "set_train_data_name" 
[21] "initialize"           "finalize"   
4

1 回答 1

2

我没有使用 lightgbm 的 R 绑定,而是查看2.1.1 版本中的 Booster 实现,似乎确实没有检索参数的接口。反过来,因为params都不是Booster类的属性,而只是传递给后端的 C 实现。

Booster本机 python 绑定(类似的类)中也缺少此类功能。但是,它存在于sklearn API中。所以原生 API 一直缺少这个函数,但是 python 中的更高级别的包装器已经添加了它。

于 2018-05-01T11:05:20.640 回答