模型选择工具

有助于模型选择的工具,例如通过分割数据集。

darts.utils.model_selection.train_test_split(data, test_size=0.25, axis=0, input_size=0, horizon=0, vertical_split_type='simple', lazy=False)[source]

将提供的序列拆分为训练集和测试集序列。

支持沿样本轴或时间轴拆分。如果输入类型是单个 TimeSeries,则只能沿时间轴拆分,因此必须提供 input_sizehorizon

沿时间轴拆分时,拆分器会尝试贪婪地满足请求的测试集大小,即当序列中的某个时间序列太小时,所有样本都将进入测试集,并且会引发异常。

启用 'model-aware' 拆分类型的时间轴拆分尝试通过部分重叠测试集和训练集来为训练重新获得尽可能多的数据点。这是可能的,因为测试集中只有预测部分不能用于训练。计算训练集最后一个可用时间步的公式如下:

训练 结束 索引 = ts_length - horizon - test_size

计算测试数据集第一个时间步的公式是:

测试 开始 索引 = ts_length - horizon - test_size - input_size + 1

参数
  • data (Union[TimeSeries, Sequence[TimeSeries]]) – 要拆分为训练集和测试集的原始数据集

  • test_size (Union[float, int, None]) – 测试集的大小。如果值介于 0 和 1 之间,则参数被视为拆分比例。否则,它被视为将包含在测试集中的每个时间序列的绝对样本数。[默认值 = 0.25]

  • axis (Optional[int, None]) – 拆分数据集的轴。当为 0(默认值)时,按样本拆分。否则,如果 axis = 1,则沿时间轴拆分时间序列。请注意,对于单个时间序列,默认选项是 1(0 没有意义)。[默认值:时间序列序列为 0,单个时间序列为 1]

  • input_size (Optional[int, None]) – 输入的大小。仅在 vertical_split_type == 'model-aware' 时有效。[默认值:None]

  • horizon (Optional[int, None]) – 预测范围。仅在 vertical_split_type == 'model-aware' 时有效。[默认值:None]

  • vertical_split_type (Optional[str, None]) – 可以是 'simple',即从时间序列中精确扣除测试集大小的样本数作为测试集,剩余的作为训练集;也可以是 'model-aware',在这种情况下您必须提供 input_sizehorizon。请注意,第二种选项在时间步方面更高效,因为训练集和测试集会部分重叠。[默认值:'simple']

  • lazy (bool) – 默认情况下,训练集和测试集数据集作为时间序列列表返回。如果数据集很大,这可能会占用大量内存,因此设置此标志可以返回一个 Sequence 对象,该对象会延迟加载数据。警告:开启 lazy 会禁用数据集的一些完整性检查,这可能导致在样本生成过程中出现异常。[默认值:False]

返回值

训练集和测试集数据集元组。

返回类型

tuple of two Sequence[TimeSeries],或 tuple of two Timeseries