有没有办法使用 SKlearn 获得滑动嵌套交叉验证?
Posted
技术标签:
【中文标题】有没有办法使用 SKlearn 获得滑动嵌套交叉验证?【英文标题】:Is there a way to get a Sliding Nested Cross Validation using SKlearn? 【发布时间】:2019-10-29 06:53:17 【问题描述】:我目前正在处理一些时间序列数据,我正在使用TimeSeriesSplit
将我的数据集拆分为前向链接交叉验证拆分。
所以如果我有 100 个数据点 - 我分成 3 个部分。 1.我在1-25训练。在 26-50 进行测试。 2. 1-50 训练。测试 51-75。 3. 1-75 训练。在 76-100 上进行测试。
将此称为扩展窗口示例。
我想知道是否有一种方法可以在我每次训练时将训练窗口向前滑动,这样它就不会从 0 开始。我正在尝试实现类似于图表的滑动窗口场景
【问题讨论】:
【参考方案1】:不幸的是,sklearn 中没有专门用于时间序列交叉验证的滑动窗口 CV。但是,使用带有参数shuffle=False
的 StratifiedKFold 或 KFold 可以模拟非随机化。请注意,这也适用于 train_test_split
,这对于时间序列数据也很有用。
这里是用于可视化各种交叉验证行为的 sklearn 文档页面:
https://scikit-learn.org/stable/auto_examples/model_selection/plot_cv_indices.html#sphx-glr-auto-examples-model-selection-plot-cv-indices-py
另一种方法是使用 Python pandas
或 collections
库按索引进行拆分。 Pandas 对时间序列相关的概念也有很好的支持,例如滚动窗口。
【讨论】:
以上是关于有没有办法使用 SKlearn 获得滑动嵌套交叉验证?的主要内容,如果未能解决你的问题,请参考以下文章
SKlearn中具有嵌套交叉验证的分类报告(平均值/个体值)
使用 sklearn 在嵌套交叉验证中使用 GroupKFold
在 sklearn 中使用网格搜索和管道获得正确的交叉验证分数
如何在 sklearn 的交叉验证中获得多类 roc auc?