{caret} как передать параметры `trainControl` пользовательской функции в r?

Я работаю со списком фреймов данных (72), которые я хочу использовать в качестве входных данных для каретки train, но у меня возникают проблемы при использовании пользовательской функции. Я нашел потенциальный ответ здесь , но относится к tuneGrid, а не к trainControl. Обе функции, которые я написал, не могут передать указанные параметры trainControl в train:

fun.train.rf <- function(x) {
  ctrl <- trainControl(method = "repeatedcv", repeats = 3)
  train(index ~ .,  data = x, method = "rf", 
        trainControl = ctrl) 
}

model.list <- lapply(list.partition, fun.train.rf)

or:

fun.train.rf <- function(x) {
  train(index ~ .,  data = x, method = "rf", 
        trainControl = list(method="repeatedcv", repeats = 3, p = 0.75)) 
}

model.list <- lapply(list.partition, fun.train.rf)

Обе функции выше "работают", но обе возвращают модели, которые игнорируют указанные параметры trainControl. Когда я изучаю полученный список обученных моделей, кажется, что оба примера используют параметры обучения по умолчанию (например, method = boot):

model.list$modelA$control$method
[1] "boot"
...

Это моя первая реальная попытка использовать lapply и списки, поэтому я предполагаю, что приведенные выше примеры скорее непродуманны, чем недостаток самого caret.

Как я могу правильно передать параметры trainControl пользовательской функции, используя знак вставки train?


person Prophet60091    schedule 30.09.2014    source источник


Ответы (1)


Вы не правильно его передали. Вместо

trainControl = list(method="repeatedcv", repeats = 3, p = 0.75)

попробуйте использовать

trControl = trainControl(method="repeatedcv", repeats = 3, p = 0.75)

Максимум

person topepo    schedule 01.10.2014