有没有办法使用 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 pandascollections 库按索引进行拆分。 Pandas 对时间序列相关的概念也有很好的支持,例如滚动窗口。

【讨论】:

以上是关于有没有办法使用 SKlearn 获得滑动嵌套交叉验证?的主要内容,如果未能解决你的问题,请参考以下文章

SKlearn中具有嵌套交叉验证的分类报告(平均值/个体值)

使用 sklearn 在嵌套交叉验证中使用 GroupKFold

在 sklearn 中使用网格搜索和管道获得正确的交叉验证分数

如何在 sklearn 的交叉验证中获得多类 roc auc?

在 sklearn 中使用 Leave-One-Out 交叉验证的 ROC 曲线

使用 sklearn 进行交叉验证的高级特征提取