When calling xgb.cv, analysts may wish to manually specify folds rather than nfolds. This function generates an object that can be given as an input for folds and additionally lets the analyst specify stratifying variables to create balanced folds.

xgb_folds(data, nfolds, strata = NULL)

Arguments

data

a data.frame or tibble that will be used to generate folds.

nfolds

(integer) the number of folds

strata

A variable that is used to conduct stratified sampling to create the folds. This could be a single character value or a variable name that corresponds to a variable in data.

Examples

df <- data.frame(a=1:100, b=100:1, c=rep(letters[1:2],50)) xgb_folds(data = df, nfolds = 10)
#> $`1` #> [1] 4 50 57 60 62 68 76 82 84 99 #> #> $`2` #> [1] 5 17 18 24 37 66 73 75 88 98 #> #> $`3` #> [1] 2 7 21 33 53 56 59 64 90 95 #> #> $`4` #> [1] 3 6 22 28 35 44 45 55 69 94 #> #> $`5` #> [1] 10 25 32 36 41 63 78 79 83 85 #> #> $`6` #> [1] 11 16 19 20 31 46 54 77 80 96 #> #> $`7` #> [1] 1 13 39 40 42 65 74 86 91 97 #> #> $`8` #> [1] 12 14 23 27 29 49 70 72 92 93 #> #> $`9` #> [1] 8 26 30 47 48 52 61 81 87 100 #> #> $`10` #> [1] 9 15 34 38 43 51 58 67 71 89 #>
xgb_folds(data = df, nfolds = 100)
#> $`1` #> [1] 26 #> #> $`2` #> [1] 6 #> #> $`3` #> [1] 4 #> #> $`4` #> [1] 40 #> #> $`5` #> [1] 72 #> #> $`6` #> [1] 98 #> #> $`7` #> [1] 42 #> #> $`8` #> [1] 92 #> #> $`9` #> [1] 61 #> #> $`10` #> [1] 82 #> #> $`11` #> [1] 63 #> #> $`12` #> [1] 33 #> #> $`13` #> [1] 2 #> #> $`14` #> [1] 56 #> #> $`15` #> [1] 32 #> #> $`16` #> [1] 94 #> #> $`17` #> [1] 29 #> #> $`18` #> [1] 76 #> #> $`19` #> [1] 84 #> #> $`20` #> [1] 46 #> #> $`21` #> [1] 48 #> #> $`22` #> [1] 57 #> #> $`23` #> [1] 85 #> #> $`24` #> [1] 16 #> #> $`25` #> [1] 28 #> #> $`26` #> [1] 9 #> #> $`27` #> [1] 77 #> #> $`28` #> [1] 97 #> #> $`29` #> [1] 99 #> #> $`30` #> [1] 39 #> #> $`31` #> [1] 51 #> #> $`32` #> [1] 25 #> #> $`33` #> [1] 58 #> #> $`34` #> [1] 27 #> #> $`35` #> [1] 93 #> #> $`36` #> [1] 30 #> #> $`37` #> [1] 36 #> #> $`38` #> [1] 75 #> #> $`39` #> [1] 14 #> #> $`40` #> [1] 65 #> #> $`41` #> [1] 69 #> #> $`42` #> [1] 41 #> #> $`43` #> [1] 10 #> #> $`44` #> [1] 1 #> #> $`45` #> [1] 74 #> #> $`46` #> [1] 67 #> #> $`47` #> [1] 11 #> #> $`48` #> [1] 70 #> #> $`49` #> [1] 95 #> #> $`50` #> [1] 52 #> #> $`51` #> [1] 34 #> #> $`52` #> [1] 60 #> #> $`53` #> [1] 13 #> #> $`54` #> [1] 17 #> #> $`55` #> [1] 7 #> #> $`56` #> [1] 22 #> #> $`57` #> [1] 49 #> #> $`58` #> [1] 24 #> #> $`59` #> [1] 47 #> #> $`60` #> [1] 19 #> #> $`61` #> [1] 73 #> #> $`62` #> [1] 96 #> #> $`63` #> [1] 45 #> #> $`64` #> [1] 100 #> #> $`65` #> [1] 88 #> #> $`66` #> [1] 66 #> #> $`67` #> [1] 43 #> #> $`68` #> [1] 23 #> #> $`69` #> [1] 68 #> #> $`70` #> [1] 50 #> #> $`71` #> [1] 55 #> #> $`72` #> [1] 91 #> #> $`73` #> [1] 64 #> #> $`74` #> [1] 59 #> #> $`75` #> [1] 86 #> #> $`76` #> [1] 44 #> #> $`77` #> [1] 54 #> #> $`78` #> [1] 21 #> #> $`79` #> [1] 89 #> #> $`80` #> [1] 83 #> #> $`81` #> [1] 80 #> #> $`82` #> [1] 8 #> #> $`83` #> [1] 12 #> #> $`84` #> [1] 18 #> #> $`85` #> [1] 90 #> #> $`86` #> [1] 79 #> #> $`87` #> [1] 37 #> #> $`88` #> [1] 31 #> #> $`89` #> [1] 87 #> #> $`90` #> [1] 78 #> #> $`91` #> [1] 81 #> #> $`92` #> [1] 20 #> #> $`93` #> [1] 71 #> #> $`94` #> [1] 5 #> #> $`95` #> [1] 62 #> #> $`96` #> [1] 35 #> #> $`97` #> [1] 38 #> #> $`98` #> [1] 15 #> #> $`99` #> [1] 3 #> #> $`100` #> [1] 53 #>
xgb_folds(data = df, nfolds = 10, strata = c)
#> $`1` #> [1] 11 16 19 21 26 69 71 80 86 94 #> #> $`2` #> [1] 3 25 27 34 41 45 58 64 82 92 #> #> $`3` #> [1] 2 4 24 35 44 55 81 87 88 99 #> #> $`4` #> [1] 17 22 60 61 62 65 77 90 97 100 #> #> $`5` #> [1] 1 7 20 38 40 49 50 51 72 73 #> #> $`6` #> [1] 12 31 39 42 53 54 63 67 70 76 #> #> $`7` #> [1] 10 13 15 28 47 56 68 75 78 93 #> #> $`8` #> [1] 8 33 36 52 59 84 89 91 95 98 #> #> $`9` #> [1] 5 6 14 23 29 32 43 66 83 96 #> #> $`10` #> [1] 9 18 30 37 46 48 57 74 79 85 #>