R 如何在xgboost中关闭silent=1?
我正在尝试训练xgboost模型,训练似乎有效,但我无法将参数silent设置为0,即打印训练迭代。我使用以下代码:R 如何在xgboost中关闭silent=1?,r,xgboost,R,Xgboost,我正在尝试训练xgboost模型,训练似乎有效,但我无法将参数silent设置为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, nr
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)
尝试
选项(warn=-1,echo=FALSE,verbose=FALSE)
,您也可以在中查看其他选项。选项您不使用R中的静默参数。
您可以使用verbose
参数
下面是verbose=0、1或2
# verbose = 0, no message
bst <- xgboost(data = dtrain, max.depth = 2, eta = 1, nthread = 2, nround = 2, objective = "binary:logistic", verbose = 0)
# verbose = 1, print evaluation metric
bst <- xgboost(data = dtrain, max.depth = 2, eta = 1, nthread = 2, nround = 2, objective = "binary:logistic", verbose = 1)
## [0] train-error:0.046522
## [1] train-error:0.022263
# verbose = 2, also print information about tree
bst <- xgboost(data = dtrain, max.depth = 2, eta = 1, nthread = 2, nround = 2, objective = "binary:logistic", verbose = 2)
## [11:41:01] amalgamation/../src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 6 extra nodes, 0 pruned nodes, max_depth=2
## [0] train-error:0.046522
## [11:41:01] amalgamation/../src/tree/updater_prune.cc:74: tree pruning end, 1 roots, 4 extra nodes, 0 pruned nodes, max_depth=2
## [1] train-error:0.022263
#verbose=0,无消息
bst如果要关闭silent=1
(请参阅?xgboost
),首先需要从param
列表中删除verbose
其次您需要观察列表
参数,因为您需要在学习时观察评估指标。它能够在第一个数据集上学习,并在第二个数据集上测试其模型(有关更多信息,请参阅?xgboost
)。e、 g
watchlist这个变通方法对我来说很有效:
将数据转换为包含标签和数据的列表,作为矩阵包中的CsparseMatrix
test_matrix_3 <- list(data = as(training_data, "CsparseMatrix"), label = label)
在R中的xgboost中是否有任何选项静音
?我认为您应该使用不同的verbose
值。我认为您只需要忽略param
中的silent
选项<代码>?xgboost
说“静默0表示打印正在运行的消息,1表示静默模式。默认值:0”。在第21页中是这样说的,我尝试了所有三种详细设置,不幸的是没有运气,但感谢tipYes@Prem,我的问题是,在xgb.train
中添加verbose=2
而不是param
列表后,我的默认值似乎是1,而不是0。感谢alot@Prem,它几乎成功了,我得到了如下打印结果:[15:03:37]合并/。/src/tree/updater\u prune.cc:74:树修剪结束,1根,12个额外节点,0个修剪节点,最大深度=4,但仍然没有评估指标…首先,我很抱歉我的反应太晚,我非常感谢你的帮助,不幸的是,这没有起到作用。但是我还是设法找到了答案,通过使用Matrix-package中的xgboost函数和Csparsematrix。很好,你找到了答案。你可能会有兴趣把它作为一个答案,这样,如果将来陷入类似的迷宫中,其他人可以从中受益。顺便说一句,这两个函数的实现是相同的xgb。train
是一个高级接口&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)
test_matrix_3 <- list(data = as(training_data, "CsparseMatrix"), label = label)
xgboost(data = test_matrix_3$data, label = test_matrix_3$label,
max.depth = 4, eta = 1, nthread = 2, nround = 500, objective = "multi:softmax", num_class = 3, eval.error = "auc")