Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/73.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-语法_R - Fatal编程技术网

理解贝叶斯优化代码中的R-语法

理解贝叶斯优化代码中的R-语法,r,R,这是关于实现贝叶斯优化的参考。我无法理解以下定义函数xgb.cv.bayes的R代码。代码如下: xgb.cv.bayes <- function(max.depth, min_child_weight, subsample, colsample_bytree, gamma){ cv <- xgv.cv(params = list(booster = 'gbtree', eta = 0.05, max_depth = max.de

这是关于实现贝叶斯优化的参考。我无法理解以下定义函数xgb.cv.bayes的R代码。代码如下:

xgb.cv.bayes <- function(max.depth, min_child_weight, subsample, colsample_bytree, gamma){
  cv <- xgv.cv(params = list(booster = 'gbtree', eta = 0.05,
                         max_depth = max.depth,
                         min_child_weight = min_child_weight,
                         subsample = subsample,
                         colsample_bytree = colsample_bytree,
                         gamma = gamma,
                         lambda = 1, alpha = 0,
                         objective = 'binary:logistic',
                         eval_metric = 'auc'),
             data = data.matrix(df.train[,-target.var]),
             label = as.matrix(df.train[, target.var]),
             nround = 500, folds = cv_folds, prediction = TRUE,
             showsd = TRUE, early.stop.round = 5, maximize = TRUE,
             verbose = 0
  )
  list(Score = cv$dt[, max(test.auc.mean)],
   Pred = cv$pred)
}
或者简单地说,我不理解以下语法:

xgb.cv.bayes <- function(max.depth, min_child_weight, subsample, colsample_bytree, gamma){
  cv <- xgv.cv(...)list(...)
}

如果我能理解这个R-语法,我将不胜感激。在R中,函数中最后一个表达式的值将自动成为这个函数的返回值。因此,您介绍的函数有两个步骤:

计算xgv.cv的结果。。。并将结果存储在 可变变异系数 创建一个包含两个条目Score和Pred的列表 其值是从cv中提取的。
由于创建列表的表达式是函数中的最后一个表达式,因此列表将自动作为返回值。所以,如果您要执行test,那么可以读取Extract、?list和?max?将cv$dt替换为cv$evaluation_log,该函数应该可以工作。基本上,在运行xgv.cv之后,您将遍历结果并输出最大AUC和cv折叠上的预测。该函数可以工作。没有问题,但是我不理解这个语法“xgb.cvlist”,我也看到了?Extract。它指的是方括号。这里我们有圆括号,它确实回答了我的问题。谢谢你的时间和解释。请允许我知道任何关于这种语法的详细解释,以及这种语法的名称。python中也有类似的语法,但工作方式不同,最后一个表达式是函数的输入。顺便说一句,由于我的声誉得分,我无法投票给你。不客气!我真的很喜欢哈德利·韦翰的那本书。网上也有大型零件,例如,您可能会发现有用的零件。特别是节返回值
xgb.cv.bayes <- function(max.depth, min_child_weight, subsample, colsample_bytree, gamma){
  cv <- xgv.cv(...)list(...)
}