darts.utils.data.tabularization.add_static_covariates_to_lagged_data(features, target_series, uses_static_covariates=True, last_shape=None)[源代码]

将静态协变量添加到回归模型的特征表中。如果 uses_static_covariates=True,则在 fit()predict() 中使用的所有目标序列必须具有相同维度的静态协变量。否则,将不考虑静态协变量。

静态协变量按照以下约定添加到滞后特征的右侧:对于一个包含两个分量的序列,每个分量有两个静态协变量 -> scov_1_comp_1 | scov_1_comp_2 | scov_2_comp_1 | scov_2_comp_2

参数
  • features (Union[ndarray, Sequence[ndarray]]) – 静态协变量将被添加到的特征 numpy 数组。可以是单一的特征矩阵,也可以是特征矩阵的 Sequence;在后一种情况下,静态协变量将被附加到此 Sequence 中的每个特征矩阵。

  • target_series (Union[TimeSeries, Sequence[TimeSeries]]) – 读取静态协变量的目标系列。

  • uses_static_covariates (bool) – 模型是否使用/期望静态协变量。如果为 True,则强制要求静态协变量在所有目标序列中必须具有相同的形状。

  • last_shape (Optional[Tuple[int, int], None]) – 可选地,静态协变量的最后观察到的形状。这在拟合之前是 None,或者当 uses_static_covariatesFalse 时。

返回

附加了静态协变量列的特征数组。如果 features 输入作为 Sequencenp.array 传递,则返回一个 Sequence;如果 features 作为 np.array 传递,则返回一个 np.arraylast_shape 是静态协变量的形状。

返回类型

(features, last_shape)

darts.utils.data.tabularization.create_lagged_component_names(target_series=None, past_covariates=None, future_covariates=None, lags=None, lags_past_covariates=None, lags_future_covariates=None, output_chunk_length=1, concatenate=True, use_static_covariates=False)[源代码]

调用辅助函数以检索使用 create_lagged_data() 创建的特征和标签数组的名称。特征的顺序如下:

沿着 n_lagged_features 轴,X 具有以下结构:

滞后目标 | 滞后过去协变量 | 滞后未来协变量 | 静态协变量

对于 *_lags=[-2,-1]*_series.n_components = 2`(滞后在所有组件之间共享),每个 `lagged_* 具有以下结构(按滞后分组):

comp0_*_lag-2 | comp1_*_lag-2 | comp0_*_lag_-1 | comp1_*_lag-1

对于 *_lags={‘comp0’:[-3, -1], ‘comp1’:[-5, -3]}*_series.n_components = 2`(组件特定的滞后),每个 `lagged_* 具有以下结构(按滞后排序,然后按组件排序):

comp1_*_lag-5 | comp0_*_lag-3 | comp1_*_lag_-3 | comp0_*_lag-1

对于静态协变量(2个静态协变量作用于2个目标组件):

cov0_*_target_comp0 | cov0_*_target_comp1 | cov1_*_target_comp0 | cov1_*_target_comp1

沿着 n_lagged_labels 轴,y 具有以下结构(对于 output_chunk_length=4target_series.n_components=2):

comp0_target_lag0 | comp1_target_lag0 | … | comp0_target_lag3 | comp1_target_lag3

注意:将仅使用 target_seriespast_covariatesfuture_covariatesstatic_covariates 中第一个系列的组件名称。

目标、过去和未来协变量滞后的命名约定是:"{name}_{type}_lag{i}",其中:

  • {name} 是 (第一个) 系列的组件名称

  • {type} 是特征类型,可以是 “target”、”pastcov” 或 “futcov” 之一。

  • {i} 是滞后值

静态协变量的命名约定是:"{name}_statcov_target_{comp}",其中:

  • {name} 是(第一个)序列的静态协变量名称

  • {comp} 是静态协变量作用的(第一个)目标组件名称。

    协变量对多变量目标序列进行全局作用,将显示“全局”。

标签的命名约定是:"{name}_target_hrz{i}",其中:

  • {name} 是 (第一个) 系列的组件名称

  • {i} 是预测范围内的步骤

返回类型

Tuple[List[List[str]], List[List[str]]]

返回

  • features_cols_namecreate_lagged_data() 生成的 X 数组中滞后特征的名称,作为 List[str]。如果 concatenate=True,还包含 y 数组的列名(在右侧)。

  • labels_cols_name

    create_lagged_data() 生成的 y 数组中的滞后特征的名称

    作为 List[str]

参见

tabularization.create_lagged_data

生成滞后特征和标签为(列表形式的)数组。

darts.utils.data.tabularization.create_lagged_data(target_series=None, past_covariates=None, future_covariates=None, lags=None, lags_past_covariates=None, lags_future_covariates=None, output_chunk_length=1, output_chunk_shift=0, uses_static_covariates=True, last_static_covariates_shape=None, max_samples_per_ts=None, multi_models=True, check_inputs=True, use_moving_windows=True, is_training=True, concatenate=True, sample_weight=None)[源代码]

is_training = True 时,创建特征数组 X 和标签数组 y 以训练滞后变量回归模型(例如 sklearn 模型);或者,当 is_training = False 时,创建特征数组 X 以从已训练的回归模型生成一系列预测。在这两种情况下,还会返回与每个生成的观测值对应的时间索引列表。

提示

建议不要直接调用 create_lagged_data,而是改为:
  • 如果希望创建 Xy 数组,可以调用 create_lagged_training_data

训练回归模型。 - 如果希望创建用于从已训练的回归模型生成预测所需的 X 数组,则应调用 create_lagged_prediction_data

这是因为尽管这两个函数仅仅是 create_lagged_data 的包装器,但它们的调用签名比 create_lagged_data 更容易理解。例如,create_lagged_prediction_data 不接受 output_chunk_lengthmulti_models 作为输入,因为在构建预测数据时不会使用这些输入。同样,create_lagged_prediction_data 只返回 Xtimes 作为输出,而不是像返回 yNone 那样与 Xtimes 一起返回。

X 数组是由最多三个独立的时间序列的滞后值构建的:

1. The target_series, which contains the values we’re trying to predict. A regression model that uses previous values of the target its predicting is referred to as autoregressive; please refer to [1] for further details about autoregressive timeseries models. 2. The past covariates series, which contains values that are not known into the future. Unlike the target series, however, past covariates are not to be predicted by the regression model. 3. The future covariates (AKA ‘exogenous’ covariates) series, which contains values that are known into the future, even beyond the data in target_series and past_covariates.

关于目标、过去和未来协变量的更详细讨论,请参见 [2]。相反,y 仅由 target_series 的滞后值组成。

X 的形状是:

X.shape = (n_observations, n_lagged_features, n_samples),

其中 n_observations 等于所有指定序列之间共享的时间点数量,或者 max_samples_per_ts,以较小者为准。y 的形状为:

y.shape = (n_observations, output_chunk_length, n_samples),

如果 multi_models = True,否则:

y.shape = (n_observations, 1, n_samples).

沿着 n_lagged_features 轴,X 具有以下结构(对于 *_lags=[-2,-1]*_series.n_components = 2):

lagged_target | lagged_past_covariates | lagged_future_covariates

其中每个 lagged_* 具有以下结构:

lag_-2_comp_1_* | lag_-2_comp_2_* | lag_-1_comp_1_* | lag_-1_comp_2_*

沿着 n_lagged_labels 轴,y 具有以下结构(对于 output_chunk_length=4target_series.n_components=2):

lag_+0_comp_1_target | lag_+0_comp_2_target | … | lag_+3_comp_1_target | lag_+3_comp_2_target

lagslags_past_covariates 必须只包含小于或等于 -1 的值。换句话说,不能使用这些系列在时间 t 的值来预测目标系列在同一时间 t 的值;这是因为根据定义,在预测时间点上,target_seriespast_covariates 在时间 t 的值是不可用的。相反,由于 future_covariates 的值是已知的未来值,lags_future_covariates 可以包含负值、正值和/或零滞后值(即我们可以使用 future_covariates 在时间 t 或之后的值来预测 target_series 在时间 t 的值)。

构建 Xy 的确切方法取决于所有指定的时间序列是否具有相同的频率:

  • 如果所有指定的时间序列具有相同的频率,则使用 strided_moving_window 来提取

从每个时间序列中提取连续的时间块;然后从每个窗口中提取滞后变量。- 如果所有指定的时间序列的频率不相同,则首先使用 find_shared_times 来找到所有三个时间序列共有的时间,然后通过将这些共同时间的时间索引偏移请求的滞后量来提取滞后特征。

在可以有效应用的情况下,’移动窗口’方法预计比’交集时间’方法更快。然而,在特殊情况下,尽管只提取了少量滞后值,但滞后值之间的差异很大(例如 lags = [-1, -1000]),’移动窗口’方法预计会消耗更多的内存,因为它在实际提取特定请求的滞后值之前,会提取最大和最小滞后值之间的所有序列值作为’窗口’。

为了将序列的滞后特征添加到 X 中,必须同时指定该序列及其相应的滞后;如果仅指定了序列而没有相应的滞后,该序列将被忽略且不会添加到 X 中。Xy 数组在每个序列的样本维度(即第二轴)上独立构建。

如果提供的序列是随机的(即 series.n_components > 1),那么将为每个样本构建一个 Xy 数组;每个样本对应的数组将沿着 Xy2 轴连接在一起。换句话说,create_lagged_datatarget_seriespast_covariatesfuture_covariates 输入的样本轴上进行了矢量化。重要的是,如果提供了随机序列,每个序列必须具有相同数量的样本,否则将抛出错误。

每个系列输入(即 target_seriespast_covariatesfuture_covariates)可以指定为单个 TimeSeries,或指定为 TimeSeriesSequence;然而,指定的系列必须是同一种类型(即要么全是 TimeSeries,要么全是 Sequence[TimeSeries])。如果指定了 Sequence[TimeSeries],那么将使用每个 Sequence 中对应的 TimeSeries 构建特征矩阵 X 和标签数组 y`(即,每个 `Sequence 中的第一个 TimeSeries 用于创建 Xy,然后每个 Sequence 中的第二个 TimeSeries 用于创建 Xy,依此类推)。如果 concatenate = True,这些 Xy 将沿着 0 轴连接;否则,将返回 Xy 数组的列表。请注意,times 始终作为 Sequence[pd.Index] 返回,即使 concatenate = True 也是如此。

参数
  • target_series (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,用于回归模型预测的序列。如果 is_training = True,则必须指定。可以指定为 TimeSeriesSequence[TimeSeries]

  • past_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,回归模型将使用的过去协变量序列作为输入。与 target_series 不同,past_covariates 不是由回归模型预测的。可以指定为 TimeSeriesSequence[TimeSeries]

  • future_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,未来协变量(即外生协变量)序列,回归模型将使用这些序列作为输入。可以指定为 TimeSeriesSequence[TimeSeries]

  • lags (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,目标系列中要作为(自回归)特征使用的滞后项。如果未指定,自回归特征将 不会 添加到 X 中。每个滞后值假定为负值(例如 lags = [-3, -1] 将提取 target_series 值,这些值与当前值相距3个时间步和1个时间步)。如果滞后项以字典形式提供,则滞后值特定于目标系列中的每个组件。

  • lags_past_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,past_covariates 的滞后值作为特征使用。与 lags 类似,每个滞后值假设小于或等于 -1。如果滞后值以字典形式提供,则滞后值特定于过去协变量序列中的每个组件。

  • lags_future_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,future_covariates 的滞后值作为特征使用。与 lagslags_past_covariates 不同,lags_future_covariates 的值可以是正的(即使用时间 t 之后 的值来预测时间 t 的目标),零(即使用时间 t 当时 的值来预测时间 t 的目标),和/或负的(即使用时间 t 之前 的值来预测时间 t 的目标)。如果 output_chunk_shift > 0,滞后值相对于移动后的输出块的第一个时间步。如果滞后值以字典形式提供,滞后值特定于未来协变量序列中的每个组件。

  • output_chunk_length (int) – 可选地,回归模型预测未来时间步数的数量。如果 is_training = True,则必须指定。

  • output_chunk_shift (int) – 可选地,将输出块提前到未来的时间步数。

  • uses_static_covariates (bool) – 模型是否使用/期望静态协变量。如果为 True,则强制要求静态协变量在所有目标序列中必须具有相同的形状。

  • last_static_covariates_shape (Optional[Tuple[int, int], None]) – 可选地,静态协变量的最后观察到的形状。这在拟合之前是 None,或者当 uses_static_covariatesFalse 时。

  • max_samples_per_ts (Optional[int, None]) – 可选地,用于训练/验证的最大样本数量;仅保留最近的样本。理论上,指定一个较小的 max_samples_per_ts 应该减少计算时间,特别是在可能生成大量观测值的情况下。

  • multi_models (bool) – 可选地,指定回归模型是否预测未来的多个时间步。如果 True,则假设回归模型预测从时间 tt+output_chunk_length 的所有时间步。如果 False,则假设回归模型仅预测 t+output_chunk_length 处的时间步。如果 is_training = False,则忽略此输入。

  • check_inputs (bool) – 可选地,指定应检查 lags_*series_* 输入的有效性。如果输入已经过有效性检查(例如在类的 __init__ 内部),则应设置为 False,否则应设置为 True

  • use_moving_windows (bool) – 可选地,指定如果所有提供的序列具有相同的频率,则应使用“移动窗口”方法来构造 Xy。如果 use_moving_windows = False,即使所有提供的序列具有相同的频率,也将始终使用“时间交集”方法。通常,设置为 True 会导致表格化速度更快,但可能会增加内存使用量。详见注释。

  • is_training (bool) – 可选地,指定构建的滞后数据是否用于训练回归模型(即 is_training = True),或用于从已训练的回归模型生成预测(即 is_training = False)。如果 is_training = True,则必须指定 target_seriesoutput_chunk_length,使用 multi_models 输入,并返回一个标签数组 y。相反,如果 is_training = False,则不需要指定 target_seriesoutput_chunk_length,忽略 multi_models 输入,返回的 y 值为 None

  • concatenate (bool) – 可选地,指定 Xy 应作为单个 np.ndarray 返回,而不是作为 Sequence[np.ndarray]。如果每个序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = FalseXy 将是列表,其第 i 个元素对应于由每个 Sequence[TimeSeries] 输入中的第 iTimeSeries 形成的特征矩阵或标签数组。相反,如果提供了 Sequence[TimeSeries] 并且 concatenate = True,那么 Xy 将是由沿 0 轴连接每个 TimeSeries 形成的所有特征/标签数组创建的数组。请注意,即使 concatenate = Truetimes 仍作为 Sequence[pd.Index] 返回。

  • sample_weight (Union[TimeSeries, Sequence[TimeSeries], str, None]) – 可选地,一些应用于目标 series 标签的样本权重。它们按观察、按标签(output_chunk_length 中的每一步)和按组件应用。如果是一个序列或一系列序列,则使用这些权重。如果权重序列只有一个组件/列,则权重全局应用于 series 中的所有组件。否则,对于组件特定的权重,组件的数量必须与 series 中的组件数量匹配。如果是字符串,则使用内置的加权函数生成权重。可用的选项是 “linear”“exponential” 衰减 - 越往过去,权重越低。权重是基于 series 中最长序列的长度全局计算的。然后对于每个序列,从全局权重的末尾提取权重。这为所有序列提供了共同的时间加权。

返回类型

Tuple[Union[ndarray, Sequence[ndarray]], Union[None, ndarray, Sequence[ndarray]], Sequence[Index], Optional[Tuple[int, int], None], Union[ndarray, Sequence[ndarray], None]]

返回

  • X – 构建的特征数组,形状为 (n_observations, n_lagged_features, n_samples)。如果时间序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = False,那么 X 将作为 Sequence[np.array] 返回;否则,X 将作为单个 np.array 返回。

  • y – 构建的标签数组。如果 multi_models = True,那么 y 是一个 (n_observations, output_chunk_length, n_samples) 形状的数组;相反,如果 multi_models = False,那么 y 是一个 (n_observations, 1, n_samples) 形状的数组。如果序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = False,那么 y 将作为 Sequence[np.array] 返回;否则,y 将作为单个 np.array 返回。

  • timesXy 中每个观测值的 time_index,返回为 pd.IndexSequence。如果序列输入被指定为 Sequence[TimeSeries],那么第 i 个列表元素给出了使用每个 Sequence 中的第 iTimeSeries 对象形成的那些观测值的时间。否则,如果序列输入被指定为 TimeSeries,唯一的元素是那些由单独的 TimeSeries 输入形成的观测值的时间。

  • last_static_covariates_shape – 静态协变量的最后观测形状。当 uses_static_covariatesFalse 时,这是 None

  • sample_weight – 应用于 X 和输出步骤 y 中每个观测值的权重,返回为 Sequencenp.ndarray

引发
  • ValueError – 如果指定的时序数据没有共享任何时间点,可以构建特征(如果 is_training = True,还包括标签)。

  • ValueError – 如果没有指定滞后,或者如果指定的任何滞后值为非负。

  • ValueError – 如果任何序列太短,无法为请求的滞后和 output_chunk_length 值创建特征和/或标签。

  • ValueError – 如果在 is_training = True 时未指定 target_series 和/或 output_chunk_length

  • ValueError – 如果提供的序列不共享相同类型的 time_index`(例如,`target_series 使用 pd.RangeIndex,但 future_covariates 使用 pd.DatetimeIndex)。

引用

1

https://otexts.com/fpp2/AR.html#AR

2

https://unit8.com/resources/使用Darts进行时间序列预测:结合过去和未来的外部数据/

参见

tabularization.create_lagged_component_names

返回滞后特征名称作为字符串列表。

darts.utils.data.tabularization.create_lagged_prediction_data(target_series=None, past_covariates=None, future_covariates=None, lags=None, lags_past_covariates=None, lags_future_covariates=None, uses_static_covariates=True, last_static_covariates_shape=None, max_samples_per_ts=None, check_inputs=True, use_moving_windows=True, concatenate=True)[源代码]

创建特征数组 X 以从已训练的回归模型生成一系列预测;每个观测值的时间索引值也会返回。

提示

这个函数只是 create_lagged_data 的一个包装;关于 X 结构的更多细节,请参考 help(create_lagged_data)

参数
  • target_series (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,回归模型要预测的序列。

  • past_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,回归模型将用作输入的过去协变量序列。与 target_series 不同,past_covariates 不是由回归模型预测的。

  • future_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,未来协变量(即外生协变量)序列,回归模型将使用这些序列作为输入。

  • lags (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,目标系列中要作为(自回归)特征使用的滞后项。如果未指定,自回归特征将 不会 添加到 X 中。每个滞后值假定为负值(例如 lags = [-3, -1] 将提取 target_series 值,这些值与当前值相距3个时间步和1个时间步)。如果滞后项以字典形式提供,则滞后值特定于目标系列中的每个组件。

  • lags_past_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,past_covariates 的滞后值作为特征使用。与 lags 类似,每个滞后值假设小于或等于 -1。如果滞后值以字典形式提供,则滞后值特定于过去协变量序列中的每个组件。

  • lags_future_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,future_covariates 的滞后值作为特征使用。与 lagslags_past_covariates 不同,lags_future_covariates 的值可以是正的(即使用时间 t 之后 的值来预测时间 t 的目标),零(即使用时间 t 的值来预测时间 t 的目标),和/或负的(即使用时间 t 之前 的值来预测时间 t 的目标)。如果滞后值以字典形式提供,则滞后值特定于未来协变量序列中的每个组件。

  • uses_static_covariates (bool) – 模型是否使用/期望静态协变量。如果为 True,则强制要求静态协变量在所有目标序列中必须具有相同的形状。

  • last_static_covariates_shape (Optional[Tuple[int, int], None]) – 可选地,静态协变量的最后观察到的形状。这在拟合之前是 None,或者当 uses_static_covariatesFalse 时。

  • max_samples_per_ts (Optional[int, None]) – 可选地,用于训练/验证的最大样本数量;仅保留最近的样本。理论上,指定一个较小的 max_samples_per_ts 应该减少计算时间,特别是在可能生成大量观测值的情况下。

  • check_inputs (bool) – 可选地,指定应检查 lags_*series_* 输入的有效性。如果输入已经过有效性检查(例如在类的 __init__ 内部),则应设置为 False,否则应设置为 True

  • use_moving_windows (bool) – 可选地,指定如果所有提供的序列具有相同的频率,则应使用“移动窗口”方法来构造 Xy。如果 use_moving_windows = False,即使所有提供的序列具有相同的频率,也将始终使用“时间交集”方法。通常,设置为 True 会导致表格化速度更快,但可能会增加内存使用量。详见注释。

  • concatenate (bool) – 可选地,指定 X 应作为单个 np.ndarray 返回,而不是作为 Sequence[np.ndarray]。如果每个序列输入被指定为 Sequence[TimeSeries]concatenate = FalseX 将是一个列表,其第 i 个元素对应于由每个 Sequence[TimeSeries] 输入中的第 iTimeSeries 形成的特征矩阵或标签数组。相反,如果提供了 Sequence[TimeSeries]concatenate = True,则 X 将是由沿 0 轴连接每个 TimeSeries 形成的所有特征数组创建的数组。请注意,即使 concatenate = Truetimes 仍作为 Sequence[pd.Index] 返回。

返回类型

Tuple[Union[ndarray, Sequence[ndarray]], Sequence[Index]]

返回

  • X – 构建的特征数组,形状为 (n_observations, n_lagged_features, n_samples)。如果时间序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = False,那么 X 将作为 Sequence[np.array] 返回;否则,X 将作为单个 np.array 返回。

  • timesXy 中每个观测值的 time_index,返回为 pd.IndexSequence。如果序列输入被指定为 Sequence[TimeSeries],那么第 i 个列表元素给出了使用每个 Sequence 中的第 iTimeSeries 对象形成的那些观测值的时间。否则,如果序列输入被指定为 TimeSeries,唯一的元素是那些由单独的 TimeSeries 输入形成的观测值的时间。

引发
  • ValueError – 如果指定的时序数据没有共享任何可以构建特征的时间点。

  • ValueError – 如果没有指定滞后,或者如果指定的任何滞后值为非负。

  • ValueError – 如果任何序列太短,无法为请求的滞后值创建特征。

  • ValueError – 如果提供的序列不共享相同类型的 time_index`(例如,`target_series 使用 pd.RangeIndex,但 future_covariates 使用 pd.DatetimeIndex)。

darts.utils.data.tabularization.create_lagged_training_data(target_series, output_chunk_length, output_chunk_shift, past_covariates=None, future_covariates=None, lags=None, lags_past_covariates=None, lags_future_covariates=None, uses_static_covariates=True, last_static_covariates_shape=None, max_samples_per_ts=None, multi_models=True, check_inputs=True, use_moving_windows=True, concatenate=True, sample_weight=None)[源代码]

创建特征数组 X 和标签数组 y 以训练滞后变量回归模型(例如 sklearn 模型);每个观测值的时间索引值也会返回。

提示

这个函数只是 create_lagged_data 的一个包装;关于 X 结构的更多细节,请参考 help(create_lagged_data)

参数
  • target_series (Union[TimeSeries, Sequence[TimeSeries]]) – 用于预测的回归模型的系列。

  • output_chunk_length (int) – 回归模型要预测的未来时间步数。

  • output_chunk_shift (int) – 可选地,将输出块提前到未来的时间步数。

  • past_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,回归模型将用作输入的过去协变量序列。与 target_series 不同,past_covariates 不是由回归模型预测的。

  • future_covariates (Union[TimeSeries, Sequence[TimeSeries], None]) – 可选地,未来协变量(即外生协变量)序列,回归模型将使用这些序列作为输入。

  • lags (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,目标系列中要作为(自回归)特征使用的滞后项。如果未指定,自回归特征将 不会 添加到 X 中。每个滞后值假定为负值(例如 lags = [-3, -1] 将提取 target_series 值,这些值与当前值相距3个时间步和1个时间步)。如果滞后项以字典形式提供,则滞后值特定于目标系列中的每个组件。

  • lags_past_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,past_covariates 的滞后值作为特征使用。与 lags 类似,每个滞后值假设小于或等于 -1。如果滞后值以字典形式提供,则滞后值特定于过去协变量序列中的每个组件。

  • lags_future_covariates (Union[Sequence[int], Dict[str, List[int]], None]) – 可选地,future_covariates 的滞后值作为特征使用。与 lagslags_past_covariates 不同,lags_future_covariates 的值可以是正的(即使用时间 t 之后 的值来预测时间 t 的目标),零(即使用时间 t 的值来预测时间 t 的目标),和/或负的(即使用时间 t 之前 的值来预测时间 t 的目标)。如果滞后值以字典形式提供,则滞后值特定于未来协变量序列中的每个组件。

  • uses_static_covariates (bool) – 模型是否使用/期望静态协变量。如果为 True,则强制要求静态协变量在所有目标序列中必须具有相同的形状。

  • last_static_covariates_shape (Optional[Tuple[int, int], None]) – 可选地,静态协变量的最后观察到的形状。这在拟合之前是 None,或者当 uses_static_covariatesFalse 时。

  • max_samples_per_ts (Optional[int, None]) – 可选地,用于训练/验证的最大样本数量;仅保留最近的样本。理论上,指定一个较小的 max_samples_per_ts 应该减少计算时间,特别是在可能生成大量观测值的情况下。

  • multi_models (bool) – 可选地,指定回归模型是否预测未来多个时间步。如果 True,则假设回归模型预测从时间 tt+output_chunk_length 的所有时间步。如果 False,则假设回归模型仅预测 t+output_chunk_length 处的时间步。

  • check_inputs (bool) – 可选地,指定应检查 lags_*series_* 输入的有效性。如果输入已经过有效性检查(例如在类的 __init__ 内部),则应设置为 False,否则应设置为 True

  • use_moving_windows (bool) – 可选地,指定如果所有提供的序列具有相同的频率,则应使用“移动窗口”方法来构造 Xy。如果 use_moving_windows = False,即使所有提供的序列具有相同的频率,也将始终使用“时间交集”方法。通常,设置为 True 会导致表格化速度更快,但可能会增加内存使用量。详见注释。

  • concatenate (bool) – 可选地,指定 Xy 应作为单个 np.ndarray 返回,而不是作为 Sequence[np.ndarray]。如果每个序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = FalseXy 将是列表,其第 i 个元素对应于由每个 Sequence[TimeSeries] 输入中的第 iTimeSeries 形成的特征矩阵或标签数组。相反,如果提供了 Sequence[TimeSeries] 并且 concatenate = True,那么 Xy 将是由沿 0 轴连接每个 TimeSeries 形成的所有特征/标签数组创建的数组。请注意,即使 concatenate = Truetimes 仍作为 Sequence[pd.Index] 返回。

  • sample_weight (Union[TimeSeries, str, None]) – 可选地,一些应用于目标 series 标签的样本权重。它们按观察、按标签(output_chunk_length 中的每一步)和按组件应用。如果是一个序列或一系列序列,则使用这些权重。如果权重序列只有一个组件/列,则权重全局应用于 series 中的所有组件。否则,对于组件特定的权重,组件的数量必须与 series 中的组件数量匹配。如果是字符串,则使用内置的加权函数生成权重。可用的选项是 “linear”“exponential” 衰减 - 越往过去,权重越低。权重是基于 series 中最长序列的长度全局计算的。然后对于每个序列,从全局权重的末尾提取权重。这为所有序列提供了共同的时间加权。

返回类型

Tuple[Union[ndarray, Sequence[ndarray]], Union[None, ndarray, Sequence[ndarray]], Sequence[Index], Optional[Tuple[int, int], None], Union[ndarray, Sequence[ndarray], None]]

返回

  • X – 构建的特征数组,形状为 (n_observations, n_lagged_features, n_samples)。如果时间序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = False,那么 X 将作为 Sequence[np.array] 返回;否则,X 将作为单个 np.array 返回。

  • y – 构建的标签数组。如果 multi_models = True,那么 y 是一个 (n_observations, output_chunk_length, n_samples) 形状的数组;相反,如果 multi_models = False,那么 y 是一个 (n_observations, 1, n_samples) 形状的数组。如果序列输入被指定为 Sequence[TimeSeries] 并且 concatenate = False,那么 y 将作为 Sequence[np.array] 返回;否则,y 将作为单个 np.array 返回。

  • timesXy 中每个观测值的 time_index,返回为 pd.IndexSequence。如果序列输入被指定为 Sequence[TimeSeries],那么第 i 个列表元素给出了使用每个 Sequence 中的第 iTimeSeries 对象形成的那些观测值的时间。否则,如果序列输入被指定为 TimeSeries,唯一的元素是那些由单独的 TimeSeries 输入形成的观测值的时间。

  • sample_weight – 应用于 X 和输出步骤 y 中每个观测值的权重,返回为 Sequencenp.ndarray

引发
  • ValueError – 如果指定的时序数据没有共享任何可以构建特征和标签的时间点。

  • ValueError – 如果没有指定滞后,或者如果指定的任何滞后值为非负。

  • ValueError – 如果任何一个序列太短,无法为请求的滞后和 output_chunk_length 值创建特征和标签。

  • ValueError – 如果提供的序列不共享相同类型的 time_index`(例如,`target_series 使用 pd.RangeIndex,但 future_covariates 使用 pd.DatetimeIndex)。

darts.utils.data.tabularization.get_shared_times(*series_or_times, sort=True)[源代码]

返回所有指定 TimeSeries 或时间索引(即所有这些时间的交集)的共享时间。如果 sort = True,则这些共享时间从最早到最晚排序。在 series_or_times 中未指定的任何 TimeSeries 或时间索引(即 None)将被忽略。

参数
  • series_or_times (Union[TimeSeries, Index, None]) – 应该进行`交集`的 TimeSeries 和/或时间索引。

  • sort (bool) – 可选地,指定返回的共享时间应按从最早到最晚的顺序排序。

返回

所有指定的 TimeSeries 和/或时间索引中存在的时间索引。

返回类型

shared_times

引发

TypeError – 如果指定的 TimeSeries 和/或时间索引不都共享相同类型的时间索引(即必须全部为 pd.DatetimeIndex 或全部为 pd.RangeIndex)。

darts.utils.data.tabularization.get_shared_times_bounds(*series_or_times)[源代码]

返回所有非 Noneseries_or_times 中最新 start_time 和最早 end_time;这些分别是所有这些 series_or_times 相交的(非紧)下限和上限。如果所有指定的系列之间不存在潜在重叠,则返回 None

提示

如果所有指定的 series_or_times 具有相同的频率,那么 get_shared_times_bounds 返回紧密的 边界 (即,返回所有时间序列交集中的最早和最晚时间)。为了说明这一点,假设我们有三个具有相同频率的序列,观察时间不同:

系列 1: —— 系列 2: —— 系列 3: ——

这里,每个 - 表示在特定时间的一个观测。在这个例子中,find_time_overlap_bounds 将返回 LBUB 的时间:

LB

系列 1: —|---| 系列 2: |---|— 系列 3: –|---|-

UB

如果指定的时序数据 不是 相同频率的,那么返回的 bounds 可能是非紧的(即 LB <= intersection.start_time() < intersection.end_time() <= UB,其中 intersection 是所有指定时序数据共享的时间)

参数

series_or_times (Sequence[Union[TimeSeries, Index, None]]) – 用于计算交集 boundsTimeSeries 和/或 pd.Index 值;任何提供的 None 值将被忽略。

返回

包含所有指定 timeseries 中最新 start_time 和最早 end time 的元组,按此顺序排列。如果指定系列之间不存在潜在重叠,则返回 None。同样,如果未指定任何非 Noneseries_or_times,则返回 None

返回类型

bounds

引发

TypeError – 如果 series_or_times 中的序列和/或时间不都共享相同类型的 time_index`(即要么全是 `pd.DatetimeIndexpd.RangeIndex)。

darts.utils.data.tabularization.strided_moving_window(x, window_len, stride=1, axis=0, check_inputs=True)[源代码]

沿指定 axis 提取 x 数组的移动窗口视图,其中每个窗口的长度为 window_len,连续窗口之间间隔 stride 个索引。提取的窗口总数等于 num_windows = (x.shape[axis] - window_len)//stride + 1

提示

此函数类似于 np.lib.stride_tricks 中的 sliding_window_view,除了:

1. strided_moving_window allows for consecutive windows to be separated by a specified stride, whilst sliding_window_view does not. 2. strided_moving_window can only operate along a single axis, whereas sliding_window_view can operate along multiple axes.

此外,与 sliding_window_view 不同,使用 strided_moving_window 不需要 numpy >= 1.20.0

参数
  • x (ndarray) – 从中提取移动窗口的数组。

  • window_len (int) – 提取的移动窗口的大小。

  • stride (int) – 可选地,连续窗口之间的分隔。

  • axis (int) – 可选地,指定沿哪个轴提取移动窗口。

  • check_inputs (bool) – 可选地,指定是否应检查输入的有效性。如果输入已经过有效性检查(例如在类的 __init__ 内部),则应设置为 False,否则应设置为 True。详见 [1]

返回

x 中提取的移动窗口。提取的窗口沿着最后一个轴堆叠,并且提取窗口的 axis 被 ‘修剪’,使其长度等于提取的窗口数量。更具体地说,windows.shape = x_trimmed_shape + (window_len,),其中 x_trimmed_shape 等于 x.shape,除了 x_trimmed_shape[axis] = num_windows

返回类型

windows

引发
  • ValueError – 如果 check_inputs = Truewindow_len 不是正数。

  • ValueError – 如果 check_inputs = Truestride 不是正数。

  • ValueError – 如果 check_inputs = Trueaxis 大于 x.ndim

  • ValueError – 如果 check_inputs = Truewindow_len 大于 x.shape[axis]

引用

1

https://numpy.org/doc/stable/reference/generated/numpy.lib.stride_tricks.as_strided.html