time_series_split#
用于时间序列问题的滚动原点交叉验证。
模块内容#
类摘要#
用于时间序列问题的滚动原点交叉验证。 |
目录#
- 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(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 – 如果提议的分割之一为空。