我正在阅读插入文件here。
我过去曾使用方法cv进行交叉验证,但在这种情况下,我想使用90%训练的简单拆分和10%的测试。
我想我可以做folds = 1但是想知道在插入符号中是否有规定的方法吗?
在文档中,trainControl()中可用于方法的参数如下:
重采样方法:boot,boot632,cv,repeatedcv,LOOCV,LGOCV(用于重复训练/测试分割),none(仅适用于整个训练集的一个模型),oob(仅适用于随机森林,袋装树,袋装地球,袋装灵活判别分析,或条件树林模型),“adaptive_cv”,“adaptive_boot”或“adaptive_LGOCV”
但我不确定这些是什么意思。也许其中一个会是我需要的那个?
一种解决方案是在caret
之外创建训练/测试分裂,并使用index
的trainControl
参数使caret
使用这些数据分区。
这需要列车指数的矢量列表。通过使用caret::createDataPartition()
函数可以轻松创建这样的对象。
library(caret)
library(MASS)
set.seed(1234)
# create four 50/50 partitions
parts <- createDataPartition(Boston$medv, times = 4, p = 0.5)
ctrl <- trainControl(method = "repeatedcv",
## The method doesn't matter
## since we are defining the resamples
index= parts,
savePredictions = TRUE
)
res <- train(medv ~ indus + chas, data = Boston, method = "lm",
trControl = ctrl)
res
请注意,createDataPartition
会创建在结果变量上分层的拆分。我最终创建了自己的数据分区功能来创建真正的随机分区。这是出于教学目的。我的印象是,对结果进行分层抽样实际上总是优于随机抽样。