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[pandas.core.series.Series, pandas.core.series.Series] | tuple[pandas.core.series.Series, pandas.core.series.Series, pandas.core.frame.DataFrame, pandas.core.frame.DataFrame][源代码][源代码]#

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

创建一个内生时间序列 y 的单一训练/测试分割,以及一个可选的外生时间序列 X

将时间序列 y 分割成一个单一的时间顺序的训练和测试分割。分割基于 test_sizetrain_size 参数,这些参数可以表示总索引数的分数,或表示要切割的整数的绝对数量。

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

如果提供了 X ,还将生成 X 的单个训练/测试分割,其 loc 索引与 y 相同。如果使用非 pandas 容器,则将使用 iloc 索引。

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

内生时间序列

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

外生时间序列

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

如果是浮点数,必须在0.0和1.0之间,并被解释为测试分割中包含的数据集的比例。比例会向上取整到下一个更高的样本整数(ceil)。如果是整数,则被解释为测试样本的总数。如果是None,则该值设置为训练大小的补集。如果 train_size 也是None,它将被设置为0.25。

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

如果是浮点数,必须在0.0到1.0之间,并被解释为包含在训练分割中的数据集的比例。比例被四舍五入到下一个较低的样本整数计数(向下取整)。如果是整数,则被解释为训练样本的总数。如果是None,该值被设置为测试大小的补数。

fh预测范围

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

锚点str, “start” (默认) 或 “end”

如果 fh=Nonetest_sizetrain_size 都不为 None,则确定行为如果训练和测试大小不总和为所有数据使用 如果为“start”,则从可用序列的开始处裁剪训练和测试集 如果为“end”,则从可用序列的结束处裁剪训练和测试集

返回:
分割tuple, length = 2 * len(arrays)

包含 y 的训练-测试分割,如果给出 X,则包含 X。如果 X 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)