繁体   English   中英

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

[英]Understanding R-syntax in the code for Bayesian Optimization

这参考了有关贝叶斯优化实现的答案 我无法理解以下定义函数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()括号后出现的以下代码部分:

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中,函数中最后一个表达式的值自动是该函数的返回值。 因此,您呈现的功能分两个步骤:

  1. 计算xgv.cv(...)的结果并将结果存储在变量cv
  2. 用两个条目( ScorePred )创建一个列表,它们的值是从cv中提取的。

由于创建列表的表达式是函数中的最后一个表达式,因此列表自动成为返回值。 因此,如果要执行test <- xgb.cv.bayes(...) ,则可以访问test$Scoretest$Pred 这回答了你的问题了吗?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM