在 sklearn 中,GridSearchCV 可以将管道作为参数,通过交叉验证找到最佳估计器。然而,通常的交叉验证是这样的:
为了交叉验证时间序列数据,训练数据和测试数据通常像这样拆分:
也就是说,测试数据应该总是领先于训练数据。
我的想法是:
编写我自己的k-fold版本类并将其传递给GridSearchCV,这样我就可以享受管道的便利。问题是让 GridSearchCV 使用指定的训练和测试数据索引似乎很困难。
写一个新的类GridSearchWalkForwardTest,类似于GridSearchCV,正在研究grid_search.py源码,发现有点复杂。
欢迎提出任何建议。
最佳答案
我认为您可以使用 Time Series Split要么代替您自己的实现,要么作为实现与您描述的完全相同的 CV 方法的基础。
经过一番挖掘,似乎有人在 this PR 中的 TimeSeriesSplit 中添加了一个 max_train_size看起来它可以满足您的需求。
关于python - 如何在 sklearn 中实现前向测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31947183/