模型选择工具

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

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)[源代码]

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

支持沿样本轴或时间轴进行分割。如果输入类型是单个时间序列,则只能沿时间轴进行分割,因此需要提供 input_sizehorizon

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

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

train end index = ts_length - horizon - test_size

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

test start index = 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], or tuple of two Timeseries