python - validation知乎 - time series split




如何在sklearn中执行向前走测试? (2)

在sklearn中,GridSearchCV可以将流水线作为参数,通过交叉验证找到最佳估计器。 但是,通常的交叉验证是这样的:

为了交叉验证时间序列数据,训练和测试数据经常被如此分割:

也就是说,测试数据应该始终在训练数据之前。

我的想法是:

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

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

任何建议是值得欢迎的。


我的意见是,你应该尝试实施自己的GridSearchWalkForwardTest。 我曾经使用GridSearch做过一次培训,并且自己实施了同样的GridSearch,但是我没有得到相同的结果。

我最后做的是使用我自己的功能。 您对训练和测试集有更多的控制权,并且可以更好地控制您训练的参数。


我认为你可以使用时间序列分割而不是自己的实现,或者作为实现CV方法的基础,就像你描述的一样。

在挖掘了一下之后,似乎有人在这个PR中的TimeSeriesSplit中添加了一个max_train_size,这看起来像是你想要的。





cross-validation