这是参考关于实现贝叶斯优化的答案。我无法理解以下定义函数 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 中,函数中最后一个表达式的值自动成为该函数的返回值。所以你提供的函数正好有两个步骤:
xgv.cv(...)
并将结果存储在变量中cv
Score
和Pred
) 的列表,其值是从 中提取的cv
。由于创建列表的表达式是函数中的最后一个表达式,因此列表自动成为返回值。因此,如果您要执行,则test <- xgb.cv.bayes(...)
可以访问test$Score
和test$Pred
。这回答了你的问题了吗?
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句