【发布时间】:2020-08-17 19:55:51
【问题描述】:
我需要进行四重嵌套重复交叉验证来训练模型。 我编写了以下代码,它具有内部交叉验证,但现在我正在努力创建外部。
fitControl <- trainControl(## 10-fold CV
method = "repeatedcv",
number = 10,
## repeated five times
repeats = 5,
savePredictions = TRUE,
classProbs = TRUE,
summaryFunction = twoClassSummary)
model_SVM_P <- train(Group ~ ., data = training_set,
method = "svmPoly",
trControl = fitControl,
verbose = FALSE,
tuneLength = 5)
我尝试解决这个问题:
ntrain=length(training_set)
train.ext=createFolds(training_set,k=4,returnTrain=TRUE)
test.ext=lapply(train.ext,function(x) (1:ntrain)[-x])
for (i in 1:4){
model_SVM_P <- train(Group ~ ., data = training_set[train.ext[[i]]],
method = "svmRadial",
trControl = fitControl,
verbose = FALSE,
tuneLength = 5)
}
但它没有奏效。 我该如何做这个外循环?
【问题讨论】:
-
这个答案可能会很有帮助stackoverflow.com/questions/62183291/…。您的代码中的问题是您为每个
i创建了四次model_SVM_P,而不是将四次迭代的结果保存在一个列表中。 -
我尝试将结果添加到列表中,但它不起作用。如何创建对象列表? model_SVM_P 类是“train”和“train.function”,我找不到创建这些元素列表的方法
-
您可以在链接的帖子中使用
lapply方法。要了解如何在 R 中使用for循环,请阅读:r4ds.had.co.nz/iteration.html。
标签: r machine-learning r-caret