时间序列交叉验证法_sklearn调用_及prophet交叉验证函数实现


搞这个的初衷一是想对时间序列预测结果进行交叉验证;二是想和prophet自带的交叉验证方法进行比较。
然而sklearn自带的时序交叉验证包并不是那么好用,不太灵活,就决定自己写一个。

1. 时间序列特定的交叉验证方法简介

时间序列不能采用一般的K-FOLD校验,具体的原理可以看机器之心翻译的这篇文章:

一文简述如何使用嵌套交叉验证方法处理时序数据

时间序列一般采用递增时间窗交叉验证法,如下图所示:

在这里插入图片描述

2. sklearn时间序列交叉验证包TimeSeriesSplit

sklearn.model_selection.TimeSeriesSplit的包默认为递增窗口交叉验证。

官方doc及sample如下:

class sklearn.model_selection.TimeSeriesSplit(n_splits=5, ***, max_train_size=None)

Parameters

  • n_splitsint, default=5 --把时间序列数据拆成几份

    Number of splits. Must be at least 2.Changed in version 0.22: n_splits default value changed from 3 to 5.

  • max_train_sizeint, default=None --限制每次training的大小。如果不设置,则默认从头开始训练(如上图所示);如果设置,就可以控制成固定的moving window。见下文的example。

    Maximum size for a single training set.

递增窗口交叉验证Example

>>> import numpy as np
>>> from sklearn.model_selection import TimeSeriesSplit
>>> X = np.array([[1, 2], [3, 4], [1, 2], [3, 4], [1, 2], [3, 4]])
>>> y = np.array([1, 2, 3, 4, 5, 6])
>>> tscv = TimeSeriesSplit()
>>> print(tscv)
TimeSeriesSplit(max_train_size=None, n_splits=5)
>>> for train_index, test_index in tscv.split(X):
...     print("TRAIN:", train_index, 
  • 3
    点赞
  • 48
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值