我想用 caret
进行自定义采样 . 我的规格如下:我每天有1次观察,我的分组因子是月份(12个值);所以在第一步中我创建了12个重新采样,在训练中有11个月(11 * 30分),在测试中有1个(30分) . 这样我总共可以获得12个重采样 .
但这对我来说还不够,我想通过添加一些每个分区的训练点的引导来使它变得更复杂一些 . 因此,我不会在Resample01中获得11 * 30点,而是会有这些330点的几个自举重采样 . 所以最后,我想要很多重新采样,但是在训练集中从未有过几个月 .
如何在 train
的调用中指定这个?我尝试了什么:
library(caret)
x = rep(1:12, each=30)
folds = groupKFold(x, k=12)
folds2 = lapply(folds, createResample, times=10)
但这是错误的,因为1 / i得到一个嵌套列表,2 /初始索引在第二步丢失 .
感谢您的帮助(如果您认为它是XY pb,请不要犹豫,告诉我)
1 回答
我相信这会解决你的问题
在
folds
中为每个组的嵌套列表中提供10个引导复制 - 这解决了丢失的索引问题 .将嵌套列表转换为一维列表 - 这解决了嵌套列表问题 .
它有用吗?
看起来像它 .
唯一的问题可能是每个重采样的预期
indexOut
,在该示例中,折叠中不存在的所有索引都用作测试 . 如果我理解你想在所持有的月份进行测试,而不是在所有举出的样品上进行测试 . 解决这个问题: