我正在使用数据框列表(72),我希望将其用作插入符train
的输入,但是在使用自定义函数时我遇到了问题。我找到了可能的答案here,但它指的是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)
或:
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)
以上两个函数&#34; work&#34;,但两个返回的模型似乎都忽略了指定的trainControl
参数。当我检查训练模型的结果列表时,两个示例似乎都使用默认训练参数(例如,method = boot
):
model.list$modelA$control$method
[1] "boot"
...
这是我第一次尝试使用lapply和list,所以我假设上面的例子可能是错误的,而不是caret
本身的不足。
如何使用插入符trainControl
将train
参数正确传递给自定义函数?
答案 0 :(得分:1)
你没有正确传递它。而不是
trainControl = list(method="repeatedcv", repeats = 3, p = 0.75)
尝试使用
trControl = trainControl(method="repeatedcv", repeats = 3, p = 0.75)
最高