有一种火车控制方法只是例如分裂而不是cv的90%和10%?

问题描述 投票:1回答:1

我正在阅读插入文件here

我过去曾使用方法cv进行交叉验证,但在这种情况下,我想使用90%训练的简单拆分和10%的测试。

我想我可以做folds = 1但是想知道在插入符号中是否有规定的方法吗?

在文档中,trainControl()中可用于方法的参数如下:

重采样方法:boot,boot632,cv,repeatedcv,LOOCV,LGOCV(用于重复训练/测试分割),none(仅适用于整个训练集的一个模型),oob(仅适用于随机森林,袋装树,袋装地球,袋装灵活判别分析,或条件树林模型),“adaptive_cv”,“adaptive_boot”或“adaptive_LGOCV”

但我不确定这些是什么意思。也许其中一个会是我需要的那个?

r r-caret
1个回答
1
投票

一种解决方案是在caret之外创建训练/测试分裂,并使用indextrainControl参数使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会创建在结果变量上分层的拆分。我最终创建了自己的数据分区功能来创建真正的随机分区。这是出于教学目的。我的印象是,对结果进行分层抽样实际上总是优于随机抽样。

© www.soinside.com 2019 - 2024. All rights reserved.