r - 如何关闭xgboost中的silent = 1?

标签 r xgboost

我正在尝试训练 xgboost 模型,训练似乎有效,但我无法设法将参数静音设置为 0,即打印训练迭代。我使用下面的代码:

param <- list(max_depth = 2, eta = 0.005, nthread = 2, objective = "multi:softprob", eval_metric = "auc", num_class = 3, verbose = 2, silent = 0)

xgb.train(param, data = test_matrix_1, nrounds = 10, print_every_n = 1)

并得到返回:

##### xgb.Booster
raw: 12.2 Kb 
call:
 xgb.train(params = param, data = test_matrix_1, nrounds = 10, 
  print_every_n = 1)
params (as set within xgb.train):
 max_depth = "2", eta = "0.005", nthread = "2", objective = "multi:softprob", eval_metric = "auc", num_class = "3", verbose = "2", silent = "0", silent = "1"
xgb.attributes:
 niter
callbacks:
 cb.print.evaluation(period = print_every_n)
niter: 10

最佳答案

首先如果您想关闭 silent = 1,您需要从 param 列表中删除 verbose >(请参阅?xgboost)。

其次您需要watchlist参数,因为您关心在学习时观察eval_metric。它能够在第一个数据集上学习并在第二个数据集上测试其模型(有关更多信息,请参阅?xgboost)。例如

watchlist <- list(train=dtrain, test=dtest)

现在可以通过以下方式完成示例实现 -

library(xgboost)

#sample data
data(agaricus.train, package='xgboost')
data(agaricus.test, package='xgboost')

dtrain <- xgb.DMatrix(agaricus.train$data, label = agaricus.train$label)
dtest  <- xgb.DMatrix(agaricus.test$data, label = agaricus.test$label)
watchlist <- list(train=dtrain, test=dtest)

#training XGBoost model 
param <- list(max_depth = 2, eta = 1, nthread = 2, 
              objective = "binary:logistic", eval_metric = "auc", eval_metric="error")
fit <- xgb.train(param, data=dtrain, nrounds=10, watchlist=watchlist, verbose = 2)

关于r - 如何关闭xgboost中的silent = 1?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48927219/

相关文章:

r - 在没有 `$` 的情况下访问网状 Python 对象

linux - 让 R 在库目录中查找文件

r - 查找值等于您的值的子集

r - 使用条件子集数据框并将每个子集保存为新数据框

python-3.x - XGBoost 最佳迭代

python - 在 Anaconda 3 windows-64 上安装 xgboost

r - 将特定字符添加到重复的字符串

c++ - xgboost构建错误: parameter packs not expanded with ‘...’ :

python-3.x - xgboost 错误 : Check failed: ! auc_error AUC:数据集仅包含 pos 或 neg 样本'

python - 多类文本分类期间 xgboost sklearn 中的 feature_names 不匹配