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_size
和train_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_size
和train_size
,且必须为 None。如果传递了fh
,则测试集将是:如果fh.is_relative
:在y
中与fh
匹配的最后可能索引 如果not fh.is_relative
:fh
绝对索引处的索引- anchorstr, “start” (默认) 或 “end”
确定如果训练集和测试集大小之和不等于所有可用数据时 的行为。仅在
fh=None
且test_size
和train_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)