Понимание R-синтаксиса в коде для байесовской оптимизации - PullRequest
0 голосов
/ 23 мая 2018

Это со ссылкой на этот ответ о реализации байесовской оптимизации.Я не могу понять следующий R-код, который определяет функцию xgb.cv.bayes ().Код выглядит следующим образом:

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-синтаксиса и где я могу найти больше примеров этого.

1 Ответ

0 голосов
/ 23 мая 2018

В R значение последнего выражения в функции автоматически является возвращаемым значением этой функции.Таким образом, представленная вами функция имеет ровно два шага:

  1. вычислить результат xgv.cv(...) и сохранить результат в переменной cv
  2. создать список с двумя записями (Score и Pred), значения которых извлекаются из cv.

Поскольку выражение, создающее список, является последним выражением в функции, список автоматически возвращается.Итак, если вы выполните test <- xgb.cv.bayes(...), вы сможете получить доступ к test$Score и test$Pred.Это отвечает на ваш вопрос?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...