Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何在xgboost中关闭silent=1?_R_Xgboost - Fatal编程技术网

R 如何在xgboost中关闭silent=1?

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

我正在尝试训练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, 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")