如何在 R 中实现保留验证

Posted

技术标签:

【中文标题】如何在 R 中实现保留验证【英文标题】:How to implement a hold-out validation in R 【发布时间】:2014-05-23 06:19:23 【问题描述】:

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

然后我想使用折叠 mydata[i] 作为测试数据,并使用 mydata[-i] 作为训练数据训练分类器。

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

另外,我希望能够完全使用预定义的折叠作为参数,而不是让函数对数据进行分区。有人有什么想法吗?

【问题讨论】:

如果你想有一个保留验证集,你不能把你的数据框分成一个训练和验证集,只将训练集提供给caret包吗?跨度> 对不起@josilber,但我想我没听懂。我已经将我的数据框分成两组,但我应该将它们传递给哪个函数? 看起来你实际上可以在caret:***.com/questions/18155482/…中做到这一点 【参考方案1】:

我认为也许您想使用 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  

【讨论】:

以上是关于如何在 R 中实现保留验证的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Security 中实现基于 JWT 的身份验证和授权

如何在基于 JWT 的单点登录身份验证架构中实现注销?

如何在 LibSVM 中实现十折交叉验证

如何在MATLAB中实现小数点后保留2位。急!!!!!!

如何在带警卫的流明中实现多重身份验证?

如何在 node.js 中实现登录身份验证