我正在尝试训练 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/