问答交流

如何进行训练集和测试集完全分开的滚动训练

由powertaurus创建,最终由powertaurus 被浏览 69 用户

我想请教一下各位大佬:怎么做,训练集和测试集完全不重合的滚动训练。


比如,用15-17年的数据作为整个的训练集,18-20年的数据作为整个的测试集,每一年滚动一次。


15年用于训练,18年用于测试; 16年训练,19年测试。。。以此类推,最后测试结果拼接在一起


自定义运行模块好像可以实现,但是我不知道如何写代码。

评论
  • 这个很简单。模板就支持。使用”滚动训练“这个模块。 参数设置如下: ![{w:100}](/wiki/api/attachments.redirect?id=594c65e2-ed54-4a63-9d28-bca420ce16b6)
  • 还有一个办法:使用自定义运行模块,该模块能够并行。使用方法见下面策略,可克隆,运行的时候需要点击”运行全部“哈(上述滚动训练也是)。 [https://bigquant.com/experimentshare/34076c963dab47b6a22d6da47275a690](https://bigquant.com/experimentshare/34076c963dab47b6a22d6da47275a690) \
  • **非常感谢您的解答!!!** 下面的自定义模块的我看懂了,是用 **11年到13年 的数据训练**,**14年的数据测试**;下一次是 **12到14 训练**,**15测试**,以此类推 上面的run函数的效果和您写的自定义模块的差不多。 \ (虽然每次的训练集和测试集都不重合(这也是一定要保证的),但是 **Σ训练集(11-19)** 是和 **Σ测试集(14-22)** 重合的); \ 您提供的自定义模块可以通过修改代码为: \ ``` test_years = ['2018','2019','2020'] parameters_list = [] for i in test_years: train_start_date = str(int(i) -3)+'-01'+'-01' train_end_date = str(int(i) - 3)+'-12'+'-31' test_start_date = i+'-01'+'-01' test_end_date = i+'-12'+'-31' parameters = {'m1.start_date':train_start_date, 'm1.end_date':train_end_date, 'm9.start_date':test_start_date, 'm9.end_date':test_end_date, } parameters_list.append({'parameters': parameters}) ``` 实现我问题里所说的 **Σ训练集(15-17)** 和 **Σ测试集(18-20)**完全分离 \ 但是**”滚动训练“这个模块**就无法实现 “**Σ训练集(15-17) 和 Σ测试集(18-20)完全分离”**这个需求,因为**==滚动训练中定义的,每一轮的测试集,都是紧挨着这一轮的训练集的。==** \ 我理解的都正确吧? \ \
{link}