python - 如何在 sklearn 中实现前向测试?

标签 python scikit-learn time-series cross-validation

在 sklearn 中,GridSearchCV 可以将管道作为参数,通过交叉验证找到最佳估计器。然而,通常的交叉验证是这样的:enter image description here

为了交叉验证时间序列数据,训练数据和测试数据通常像这样拆分:enter image description here

也就是说,测试数据应该总是领先于训练数据。

我的想法是:

  1. 编写我自己的k-fold版本类并将其传递给GridSearchCV,这样我就可以享受管道的便利。问题是让 GridSearchCV 使用指定的训练和测试数据索引似乎很困难。

  2. 写一个新的类GridSearchWalkForwardTest,类似于GridSearchCV,正在研究grid_search.py​​源码,发现有点复杂。

欢迎提出任何建议。

最佳答案

我认为您可以使用 Time Series Split要么代替您自己的实现,要么作为实现与您描述的完全相同的 CV 方法的基础。

经过一番挖掘,似乎有人在 this PR 中的 TimeSeriesSplit 中添加了一个 max_train_size看起来它可以满足您的需求。

关于python - 如何在 sklearn 中实现前向测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947183/

相关文章:

r - R 中带有 ggplot2 的箱线图 - 按月返回

Python 3 : Tkinter: How to change Entry. get() 成整数

python - 根据 Pandas 数据框中的列值获取更改日期

scikit-learn - 随机森林 : Running out of memory

scikit-learn - Gridsearch CV 在创建折叠之前是否会打乱数据?

python - 如何解决由 Get_dummies 引起的内存错误

r - 根据列中的其他值填写 NA 值

python - Dask 和 Numba - 如何有效地使用 map 分区?

python - Django 过滤器模型一对多关系,价格之间的最大差异

python - Pandas : from a two columns dataframe to a (time series) multi-columned dataFrame