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_size和train_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_size和train_size不能同时指定且必须为 None。如果传递了fh,测试集将是:如果fh.is_relative:在y内匹配fh的最后一个可能的索引;如果not fh.is_relative:在fh的绝对索引处的索引- 锚点str, “start” (默认) 或 “end”
如果
fh=None且test_size和train_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)