javed khan
2020-Mar-03 11:29 UTC
[R] Getting error message, "LOOCV is not compatible with `resamples()` since only one resampling estimate is available. "
Hi, I am using different validation methods for random search and grid search. The validation methods are 10 fold CV, bootstrap and LOOCV but for LOOCV, I get the error message when I draw boxplots for all the results. Error is , LOOCV is not compatible with `resamples()` since only one resampling estimate is available. The code is below. d=readARFF("china.arff") index <- createDataPartition(d$Effort, p = .70,list = FALSE) tr <- d[index, ] ts <- d[-index, ] index_2 <- createFolds(tr$Effort, returnTrain = TRUE, list = TRUE) ct_rand <- trainControl(method = "repeatedcv", number=10, repeats=10,index = index_2, search="random") ct_grid <- trainControl(method = "repeatedcv", number=10, repeats=10,index = index_2, search="grid") ct_boot1 <- trainControl(method = "boot", number=100, index = index_2, search="random") ct_boot2 <- trainControl(method = "boot", number=100, index = index_2, search="grid") ct_locv <- trainControl(method = "LOOCV", search="random") ct_locv2 <- trainControl(method = "LOOCV", search="grid") set.seed(30218) ran_CV <- train(Effort ~ ., data = tr, method = "pls", tuneLength = 15, metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_rand) getTrainPerf(ran_CV) rn <- predict(ran_CV, newdata = ts) ## ## ## ## ##grid search CV set.seed(30218) grid_CV <- train(Effort ~ ., data = tr, method = "pls", metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_grid) getTrainPerf(grid_CV) set.seed(30218) ran_boot <- train(Effort ~ ., data = tr, method = "pls", tuneLength = 15, metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_boot1) getTrainPerf(ran_boot) rn <- predict(ran_search, newdata = ts) ##MAE(rn, ts$Effort) ## ## ## ## ##grid search boot set.seed(30218) grid_boot <- train(Effort ~ ., data = tr, method = "pls", metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_boot2) getTrainPerf(grid_boot) set.seed(30218) ran_locv <- train(Effort ~ ., data = tr, method = "pls", tuneLength = 15, metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_locv) getTrainPerf(ran_locv) rn <- predict(ran_search, newdata = ts) ##MAE(rn, ts$Effort) ## ## ## ## ##grid search CV set.seed(30218) grid_locv <- train(Effort ~ ., data = tr, method = "pls", metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_locv2) getTrainPerf(grid_locv) rValues <- resamples(list(Random_Search_CV=ran_CV, Grid_Search_CV=grid_CV, Random_Search_Boot=ran_boot, Grid_Search_Boot=grid_boot , Random_Search_LOOCV=ran_locv, Grid_Search_LOOCV=grid_locv)) bwplot(rValues,metric="MAE", scales=list(cex=1), col="Green") [[alternative HTML version deleted]]
Bert Gunter
2020-Mar-03 16:07 UTC
[R] Getting error message, "LOOCV is not compatible with `resamples()` since only one resampling estimate is available. "
2 1/2 suggestions: 1. Provide a small reproducible example with **minimal code** . It can be difficult to sort through dozens of lines of code, and I, anyway, would be unwilling to spend time trying to debug/isolate the problem when you have apparently not made much of an effort to do so yourself. Others may well be both more knowledgeable and more tolerant, of course. 2. If, **after a suitable wait ** you have not received useful answers, contact the package maintainer of the package you used **which you have again failed to identify** (the caret package?) . Also check to see whether the package has its own user support structure. Some do, and this should be the first point of contact anyway if so. 2 1/2 . Post in **plain text** not html, though I don't think it mattered here. Bert Gunter "The trouble with having an open mind is that people keep coming along and sticking things into it." -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) On Tue, Mar 3, 2020 at 3:30 AM javed khan <javedbtk111 at gmail.com> wrote:> Hi, I am using different validation methods for random search and grid > search. The validation methods are 10 fold CV, bootstrap and LOOCV but for > LOOCV, I get the error message when I draw boxplots for all the results. > > Error is , LOOCV is not compatible with `resamples()` since only one > resampling estimate is available. > > The code is below. > > d=readARFF("china.arff") > index <- createDataPartition(d$Effort, p = .70,list = FALSE) > tr <- d[index, ] > ts <- d[-index, ] > index_2 <- createFolds(tr$Effort, returnTrain = TRUE, list = TRUE) > > > > > ct_rand <- trainControl(method = "repeatedcv", number=10, repeats=10,index > = index_2, search="random") > ct_grid <- trainControl(method = "repeatedcv", number=10, repeats=10,index > = index_2, search="grid") > > > ct_boot1 <- trainControl(method = "boot", number=100, index = index_2, > search="random") > ct_boot2 <- trainControl(method = "boot", number=100, index = index_2, > search="grid") > > ct_locv <- trainControl(method = "LOOCV", search="random") > ct_locv2 <- trainControl(method = "LOOCV", search="grid") > > set.seed(30218) > ran_CV <- train(Effort ~ ., data = tr, > method = "pls", > tuneLength = 15, > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_rand) > getTrainPerf(ran_CV) > rn <- predict(ran_CV, newdata = ts) > > ## ## ## ## ##grid search CV > > set.seed(30218) > grid_CV <- train(Effort ~ ., data = tr, > method = "pls", > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_grid) > > getTrainPerf(grid_CV) > > set.seed(30218) > ran_boot <- train(Effort ~ ., data = tr, > method = "pls", > tuneLength = 15, > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_boot1) > getTrainPerf(ran_boot) > rn <- predict(ran_search, newdata = ts) > ##MAE(rn, ts$Effort) > > > ## ## ## ## ##grid search boot > > set.seed(30218) > grid_boot <- train(Effort ~ ., data = tr, > method = "pls", > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_boot2) > > getTrainPerf(grid_boot) > > > set.seed(30218) > ran_locv <- train(Effort ~ ., data = tr, > method = "pls", > tuneLength = 15, > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_locv) > getTrainPerf(ran_locv) > rn <- predict(ran_search, newdata = ts) > ##MAE(rn, ts$Effort) > > > ## ## ## ## ##grid search CV > > set.seed(30218) > grid_locv <- train(Effort ~ ., data = tr, > method = "pls", > metric = "MAE", > preProc = c("center", "scale", "zv"), > trControl = ct_locv2) > > getTrainPerf(grid_locv) > > > rValues <- resamples(list(Random_Search_CV=ran_CV, Grid_Search_CV=grid_CV, > Random_Search_Boot=ran_boot, Grid_Search_Boot=grid_boot , > Random_Search_LOOCV=ran_locv, > Grid_Search_LOOCV=grid_locv)) > > bwplot(rValues,metric="MAE", scales=list(cex=1), col="Green") > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. >[[alternative HTML version deleted]]
javed khan
2020-Mar-03 20:27 UTC
[R] Getting error message, "LOOCV is not compatible with `resamples()` since only one resampling estimate is available. "
The data is as follows: I included the code for 10 fold CV and LOOCV structure(list(ID = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15), Language = c(1, 1, 1, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 3), Hardware = c(1, 2, 3, 1, 2, 4, 4, 2, 1, 1, 1, 5, 6, 1, 1), Duration = c(17, 7, 15, 18, 13, 5, 5, 11, 14, 5, 13, 31, 20, 26, 14), KSLOC = c(253.6, 40.5, 450, 214.4, 449.9, 50, 43, 200, 289, 39, 254.2, 128.6, 161.4, 164.8, 60.2), AdjFP = c(1217.1, 507.3, 2306.8, 788.5, 1337.6, 421.3, 99.9, 993, 1592.9, 240, 1611, 789, 690.9, 1347.5, 1044.3), RAWFP = c(1010, 457, 2284, 881, 1583, 411, 97, 998, 1554, 250, 1603, 724, 705, 1375, 976 ), EffortMM = c(287, 82.5, 1107.31, 86.9, 336.3, 84, 23.2, 130.3, 116, 72, 258.7, 230.7, 157, 246.9, 69.9)), class = "data.frame", row.names = c(NA, -15L)) index <- createDataPartition(d$Effort, p = .70,list = FALSE) tr <- d[index, ] ts <- d[-index, ] index_2 <- createFolds(tr$Effort, returnTrain = TRUE, list = TRUE) ct_rand <- trainControl(method = "repeatedcv", number=10, repeats=10,index = index_2, search="random") ct_grid <- trainControl(method = "repeatedcv", number=10, repeats=10,index = index_2, search="grid") ct_locv <- trainControl(method = "LOOCV", search="random") ct_locv2 <- trainControl(method = "LOOCV", search="grid") ## ## ## ## ##Random Search for for 10 fold CV set.seed(30218) ran_CV <- train(Effort ~ ., data = tr, method = "pls", tuneLength = 15, metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_rand) getTrainPerf(ran_CV) rn <- predict(ran_CV, newdata = ts) ##MAE(rn, ts$Effort) ## ## ## ## ##grid search for 10 fold CV set.seed(30218) grid_CV <- train(Effort ~ ., data = tr, method = "pls", metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_grid) getTrainPerf(grid_CV) ## ## ## ## ##Random Search for LOOCV set.seed(30218) ran_locv <- train(Effort ~ ., data = tr, method = "pls", tuneLength = 15, metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_locv) getTrainPerf(ran_locv) rn <- predict(ran_search, newdata = ts) ##MAE(rn, ts$Effort) ## ## ## ## ##Grid Search for LOOCV set.seed(30218) grid_locv <- train(Effort ~ ., data = tr, method = "pls", metric = "MAE", preProc = c("center", "scale", "zv"), trControl = ct_locv2) getTrainPerf(grid_locv) rValues <- resamples(list(Random_Search_CV=ran_CV, Grid_Search_CV=grid_CV, Random_Search_LOOCV=ran_locv, Grid_Search_LOOCV=grid_locv)) bwplot(rValues,metric="MAE", scales=list(cex=1), col="Green") On Tue, Mar 3, 2020 at 5:07 PM Bert Gunter <bgunter.4567 at gmail.com> wrote:> 2 1/2 suggestions: > > 1. Provide a small reproducible example with **minimal code** . It can be > difficult to sort through dozens of lines of code, and I, anyway, would be > unwilling to spend time trying to debug/isolate the problem when you have > apparently not made much of an effort to do so yourself. Others may well be > both more knowledgeable and more tolerant, of course. > > 2. If, **after a suitable wait ** you have not received useful answers, > contact the package maintainer of the package you used **which you have > again failed to identify** (the caret package?) . Also check to see whether > the package has its own user support structure. Some do, and this should be > the first point of contact anyway if so. > > 2 1/2 . Post in **plain text** not html, though I don't think it mattered > here. > > > Bert Gunter > > "The trouble with having an open mind is that people keep coming along and > sticking things into it." > -- Opus (aka Berkeley Breathed in his "Bloom County" comic strip ) > > > On Tue, Mar 3, 2020 at 3:30 AM javed khan <javedbtk111 at gmail.com> wrote: > >> Hi, I am using different validation methods for random search and grid >> search. The validation methods are 10 fold CV, bootstrap and LOOCV but for >> LOOCV, I get the error message when I draw boxplots for all the results. >> >> Error is , LOOCV is not compatible with `resamples()` since only one >> resampling estimate is available. >> >> The code is below. >> >> d=readARFF("china.arff") >> index <- createDataPartition(d$Effort, p = .70,list = FALSE) >> tr <- d[index, ] >> ts <- d[-index, ] >> index_2 <- createFolds(tr$Effort, returnTrain = TRUE, list = TRUE) >> >> >> >> >> ct_rand <- trainControl(method = "repeatedcv", number=10, repeats=10,index >> = index_2, search="random") >> ct_grid <- trainControl(method = "repeatedcv", number=10, repeats=10,index >> = index_2, search="grid") >> >> >> ct_boot1 <- trainControl(method = "boot", number=100, index = index_2, >> search="random") >> ct_boot2 <- trainControl(method = "boot", number=100, index = index_2, >> search="grid") >> >> ct_locv <- trainControl(method = "LOOCV", search="random") >> ct_locv2 <- trainControl(method = "LOOCV", search="grid") >> >> set.seed(30218) >> ran_CV <- train(Effort ~ ., data = tr, >> method = "pls", >> tuneLength = 15, >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_rand) >> getTrainPerf(ran_CV) >> rn <- predict(ran_CV, newdata = ts) >> >> ## ## ## ## ##grid search CV >> >> set.seed(30218) >> grid_CV <- train(Effort ~ ., data = tr, >> method = "pls", >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_grid) >> >> getTrainPerf(grid_CV) >> >> set.seed(30218) >> ran_boot <- train(Effort ~ ., data = tr, >> method = "pls", >> tuneLength = 15, >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_boot1) >> getTrainPerf(ran_boot) >> rn <- predict(ran_search, newdata = ts) >> ##MAE(rn, ts$Effort) >> >> >> ## ## ## ## ##grid search boot >> >> set.seed(30218) >> grid_boot <- train(Effort ~ ., data = tr, >> method = "pls", >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_boot2) >> >> getTrainPerf(grid_boot) >> >> >> set.seed(30218) >> ran_locv <- train(Effort ~ ., data = tr, >> method = "pls", >> tuneLength = 15, >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_locv) >> getTrainPerf(ran_locv) >> rn <- predict(ran_search, newdata = ts) >> ##MAE(rn, ts$Effort) >> >> >> ## ## ## ## ##grid search CV >> >> set.seed(30218) >> grid_locv <- train(Effort ~ ., data = tr, >> method = "pls", >> metric = "MAE", >> preProc = c("center", "scale", "zv"), >> trControl = ct_locv2) >> >> getTrainPerf(grid_locv) >> >> >> rValues <- resamples(list(Random_Search_CV=ran_CV, Grid_Search_CV=grid_CV, >> Random_Search_Boot=ran_boot, Grid_Search_Boot=grid_boot , >> Random_Search_LOOCV=ran_locv, >> Grid_Search_LOOCV=grid_locv)) >> >> bwplot(rValues,metric="MAE", scales=list(cex=1), col="Green") >> >> [[alternative HTML version deleted]] >> >> ______________________________________________ >> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see >> https://stat.ethz.ch/mailman/listinfo/r-help >> PLEASE do read the posting guide >> http://www.R-project.org/posting-guide.html >> and provide commented, minimal, self-contained, reproducible code. >> >[[alternative HTML version deleted]]