如何在R中实现保持验证

时间:2014-04-09 20:02:48

标签: r machine-learning classification r-caret

假设我正在使用Sonar数据,并且我想在R中进行保留验证。我使用createFolds包中的caret对数据进行了分区folds <- createFolds(mydata$Class, k=5)

我希望使用完全折叠mydata[i]作为测试数据,并使用mydata[-i]作为列车数据训练分类器。

我的第一个想法是使用train函数,但我找不到任何支持保留验证。我在这里错过了什么吗?

此外,我希望能够使用预定义的折叠作为参数,而不是让函数对数据进行分区。有没有人有任何想法?

提前致谢

1 个答案:

答案 0 :(得分:3)

我想也许您想使用1/5的数据作为测试集并使用其他4/5进行训练?

如果是这种情况,您应首先使用createDataPartition,然后让train完成其余工作。例如:

> library(caret)
> library(mlbench)
> data(Sonar)
> 
> set.seed(1)
> in_train <- createDataPartition(Sonar$Class, p = 4/5, list = FALSE)
> 
> training <- Sonar[ in_train,]
> testing  <- Sonar[-in_train,]
> 
> nrow(Sonar)
[1] 208
> nrow(training)
[1] 167
> nrow(testing)
[1] 41
> 
> lda_fit <- train(Class ~ ., data = training, method = "lda")
> lda_fit
Linear Discriminant Analysis 

167 samples
 60 predictors
  2 classes: 'M', 'R' 

No pre-processing
Resampling: Bootstrapped (25 reps) 

Summary of sample sizes: 167, 167, 167, 167, 167, 167, ... 

Resampling results

  Accuracy  Kappa  Accuracy SD  Kappa SD
  0.71      0.416  0.0532       0.108  

最大