改变 X 和 Y 的 scikit-learn 自定义转换器/管道

Mat*_* M. 5 python pipeline scikit-learn

我有一组 N 个数据点 X = {x 1 , ..., x n } 和一组 N 个目标值/类 Y = {y 1 , ..., y n }。

给定 y i的特征向量是在考虑数据点的“窗口”(缺乏更好的术语)的情况下构建的,例如我可能想要堆叠“最后 4 个数据点”,即 x i-4 , x i-3 , x i-2 , x i-1用于预测 y i

显然,对于 4 的窗口大小,无法为前三个目标值构建这样的特征向量,我想简单地删除它们。同样对于最后一个数据点 x n

这不是问题,除非我希望这作为 sklearn 管道的一部分发生。到目前为止,我已经成功地为其他任务编写了一些自定义转换器,但那些不能(据我所知)改变 Y 矩阵。

有没有办法做到这一点,我不知道还是我坚持这样做作为管道外的预处理?(这意味着,我将无法使用 GridsearchCV 来找到最佳窗口大小和移位。)

我试过搜索这个,但我想出的只是这个问题,它涉及从 X 矩阵中删除样本。那里接受的答案让我想,scikit-learn 不支持我想做的事情,但我想确定一下。

Dav*_*vid 5

你是对的,你不能在 sklearn 中调整你的目标Pipeline。这并不意味着您不能进行网格搜索,但这确实意味着您可能需要以更多的手动方式进行。我建议编写一个函数来进行转换和过滤y,然后手动循环通过通过ParameterGrid. 如果这对您没有意义,请使用您拥有的代码编辑您的帖子以获得进一步的帮助。