问题描述
我正在尝试使用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)