time_series_split#

用于时间序列问题的滚动原点交叉验证。

模块内容#

类摘要#

TimeSeriesSplit

用于时间序列问题的滚动原点交叉验证。

目录#

class evalml.preprocessing.data_splitters.time_series_split.TimeSeriesSplit(max_delay=0, gap=0, forecast_horizon=None, time_index=None, n_series=None, n_splits=3)[source]#

用于时间序列问题的滚动原点交叉验证。

参数 max_delay、gap 和 forecast_horizon 仅用于验证请求的分割大小在给定这些参数的情况下不会太小。

参数
  • max_delay (int) – 特征工程的最大延迟值。时间序列管线会从现有特征创建延迟特征。此过程会在前 max_delay 行引入 NaN。分割器使用前一次分割的最后 max_delay 行作为当前分割的前 max_delay 行,以避免“丢弃”不必要的数据。默认为 0。

  • gap (int) – 用于生成特征的数据与用于预测的数据之间的时间单位数量。默认为 0。

  • forecast_horizon (int, None) – 要预测的时间单位数量。用于参数验证。如果为整数,将设置 cv 分割的大小。默认为 None。

  • time_index (str) – 包含用于排序数据的时间日期信息的列的名称。默认为 None。

  • n_splits (int) – 要进行的数据分割数量。默认为 3。

示例

>>> import numpy as np
>>> import pandas as pd
...
>>> X = pd.DataFrame([i for i in range(10)], columns=["First"])
>>> y = pd.Series([i for i in range(10)])
...
>>> ts_split = TimeSeriesSplit(n_splits=4)
>>> generator_ = ts_split.split(X, y)
...
>>> first_split = next(generator_)
>>> assert (first_split[0] == np.array([0, 1])).all()
>>> assert (first_split[1] == np.array([2, 3])).all()
...
...
>>> second_split = next(generator_)
>>> assert (second_split[0] == np.array([0, 1, 2, 3])).all()
>>> assert (second_split[1] == np.array([4, 5])).all()
...
...
>>> third_split = next(generator_)
>>> assert (third_split[0] == np.array([0, 1, 2, 3, 4, 5])).all()
>>> assert (third_split[1] == np.array([6, 7])).all()
...
...
>>> fourth_split = next(generator_)
>>> assert (fourth_split[0] == np.array([0, 1, 2, 3, 4, 5, 6, 7])).all()
>>> assert (fourth_split[1] == np.array([8, 9])).all()

方法

get_metadata_routing

获取此对象的元数据路由。

get_n_splits

获取数据分割的数量。

is_cv

返回数据分割器是否为交叉验证数据分割器。

split

获取时间序列分割。

get_metadata_routing(self)#

获取此对象的元数据路由。

请查看 用户指南 了解路由机制的工作原理。

返回

routing – 一个封装了路由信息的 MetadataRequest 对象。

返回类型

MetadataRequest

get_n_splits(self, X=None, y=None, groups=None)[source]#

获取数据分割的数量。

参数
  • X (pd.DataFrame, None) – 要分割的特征。

  • y (pd.DataFrame, None) – 要分割的目标变量。默认为 None。

  • groups – 被忽略,但保留以兼容 sklearn API。默认为 None。

返回

分割数量。

property is_cv(self)#

返回数据分割器是否为交叉验证数据分割器。

返回

如果该分割器是交叉验证数据分割器

返回类型

bool

split(self, X, y=None, groups=None)[source]#

获取时间序列分割。

假设 X 和 y 已按时间升序排序。此方法可以处理传入空或 None 的 X 和 y 数据,但请注意 X 和 y 不能同时为 None 或空。

参数
  • X (pd.DataFrame, None) – 要分割的特征。

  • y (pd.DataFrame, None) – 要分割的目标变量。默认为 None。

  • groups – 被忽略,但保留以兼容 sklearn API。默认为 None。

生成值

(训练集, 测试集) 索引元组的迭代器。

抛出

ValueError – 如果提议的分割之一为空。