temporal_train_test_split#

temporal_train_test_split(y: Series | DataFrame | ndarray | Index, X: DataFrame | None = None, test_size: float | None = None, train_size: float | None = None, fh: int | list | ndarray | Index | ForecastingHorizon | None = None, anchor: str = 'start') tuple[Series, Series] | tuple[Series, Series, DataFrame, DataFrame][source]#

将时间序列数据容器拆分为单个训练/测试集。

创建内生时间序列 y 和可选的外生时间序列 X 的单个时间顺序训练/测试集。

将时间序列 y 拆分为单个时间顺序的训练集和测试集。拆分基于 test_sizetrain_size 参数,这些参数可以表示总索引数的比例,或用于切分的绝对整数个数。

如果数据包含多个时间序列(面板或分层),则将为每个单独的时间序列计算比例和训练-测试集。

如果提供了 X,也会生成 X 的单个训练/测试集,其 loc 索引与 y 相同。如果使用非 pandas 基础容器,则将使用 iloc 索引代替。

参数:
ysktime 兼容数据容器格式的时间序列

内生时间序列

Xsktime 兼容数据容器格式的时间序列,可选,默认为 None

外生时间序列

test_sizefloat, int 或 None,可选 (默认为 None)

如果为 float,则必须在 0.0 到 1.0 之间,解释为用于测试集的 数据集的比例。比例四舍五入到最接近的向上取整样本计数 (ceil)。如果为 int,则解释为测试样本的总数。如果为 None,则该值设置为训练大小的补充。如果 train_size 也为 None,则将设置为 0.25。

train_sizefloat, int, 或 None, (默认为 None)

如果为 float,则必须在 0.0 到 1.0 之间,解释为用于训练集的 数据集的比例。比例四舍五入到最接近的向下取整样本计数 (floor)。如果为 int,则解释为训练样本的总数。如果为 None,则该值设置为测试大小的补充。

fhForecastingHorizon

用于拆分的预测范围,测试集的替代规范。如果给定,则不能同时指定 test_sizetrain_size,且必须为 None。如果传递了 fh,则测试集将是:如果 fh.is_relative:在 y 中与 fh 匹配的最后可能索引 如果 not fh.is_relativefh 绝对索引处的索引

anchorstr, “start” (默认) 或 “end”

确定如果训练集和测试集大小之和不等于所有可用数据时 的行为。仅在 fh=Nonetest_sizetrain_size 均非 None 时使用。如果为 “start”,则从可用时间序列的开头切分训练集和测试集。如果为 “end”,则从可用时间序列的末尾切分训练集和测试集。

返回值:
splittingtuple, 长度 = 2 * len(arrays)

包含 y 的训练-测试集的元组,如果给定 X,则包含 X 的训练-测试集。如果 X is None,则返回 (y_train, y_test)。否则,返回 (y_train, y_test, X_train, X_test)

参考资料

[1]

最初改编自 alkaline-ml/pmdarima

示例

>>> from sktime.datasets import load_airline, load_osuleaf
>>> from sktime.split import temporal_train_test_split
>>> from sktime.utils._testing.panel import _make_panel
>>> # univariate time series
>>> y = load_airline()
>>> y_train, y_test = temporal_train_test_split(y, test_size=36)
>>> y_test.shape
(36,)
>>> # panel time series
>>> y = _make_panel(n_instances = 2, n_timepoints = 20)
>>> y_train, y_test = temporal_train_test_split(y, test_size=5)
>>> # last 5 timepoints for each instance
>>> y_test.shape
(10, 1)

该函数也可应用于面板或分层数据,在这种情况下,将对每个单独的时间序列应用拆分: >>> from sktime.utils._testing.hierarchical import _make_hierarchical >>> y = _make_hierarchical() >>> y_train, y_test = temporal_train_test_split(y, test_size=0.2)