当“替换=假”时,RCARET不能获取比总体更大的样本

问题描述

我正在尝试使用R中的CARET包来训练多项式支持向量机,并获取问题标题中所述的错误消息。我在搜索解决方案时遇到困难,并且想知道是否有人可以引导我寻求解决方案。

我的代码在下面共享。

Train_CTRL <- trainControl(method = "repeatedcv",number = 10,repeats = 5)
SVM_poly <- train(Degree~.,data = Train_Set_norm,method = "svmpoly",trControl = Train_CTRL,tuneLength = 1000)

错误

sample.int(n = 1000000L,大小= num_rs * nrow(trainInfo $ loop)+中的错误: 当'replace = FALSE'时,样本不能大于总体样本

解决方法

错误非常简单。它表示您的数据集中的样本数小于1000。tuneLength应该小于数据集中每个组/类的样本数。由于您尚未提供数据,因此我可以使用iris这样的数据来重现您的错误,例如

library(caret)

Train_CTRL <- trainControl(method = "repeatedcv",number = 10,repeats = 5)
SVM_Poly <- train(Species~.,data = iris,method = "svmPoly",trControl = Train_CTRL,tuneLength = 1000)

sample.int(n = 1000000L,大小= num_rs * nrow(trainInfo $ loop)+中的错误: 当'replace = FALSE'时,样本不能大于总体样本

具有5次重复的10倍交叉验证的tuneLength = 1000将产生1000 x 10 x 5 = 50000个组合,这些组合在计算上很费力。您可以在tuneLength中使用较小的数字,例如

SVM_Poly <- train(Species~.,tuneLength = 10)