Scaler¶
- class darts.dataprocessing.transformers.scaler.Scaler(scaler=None, name='Scaler', global_fit=False, n_jobs=1, verbose=False)[源码]¶
- 基类: - FittableDataTransformer,- InvertibleDataTransformer- 用于在时序上使用 Scaler 的通用包装类。 - 底层的 scaler 必须实现 - fit()、- transform()和- inverse_transform()方法(通常来自 scikit-learn)。- 当 Scaler 应用于多元时序时,缩放是按组件进行的。当序列是随机的时,缩放是跨所有样本(对于每个给定组件)进行的。转换独立应用于时序的每个维度(组件),有效地合并一个组件的所有样本以计算转换。 - 注意 - Scaler 不会对序列的静态协变量进行缩放。这必须在构建序列之前完成,或者稍后通过提取协变量、转换值,然后再将它们重新应用到序列中完成。为此,请参阅 TimeSeries 属性 TimeSeries.static_covariates 和方法 TimeSeries.with_static_covariates() - 参数
- scaler – 用于转换数据的 scaler。它必须提供 - fit()、- transform()和- inverse_transform()方法。默认值:- sklearn.preprocessing.MinMaxScaler(feature_range=(0, 1));这将把时序的所有值缩放到 0 到 1 之间。
- name – Scaler 的特定名称 
- global_fit ( - bool) – 可选,传递给 fit() 方法的所有 TimeSeries 是否应被用于拟合 *单个* 参数集,或者是否应独立地为每个提供的 TimeSeries 拟合不同的参数集。如果 True,则将 Sequence[TimeSeries] 传递给 ts_fit,并使用所有提供的 TimeSeries 拟合单个参数集。如果 False,则每个 TimeSeries 会单独传递给 ts_fit,并且为每个拟合操作生成不同的拟合参数集。有关更多详细信息,请参阅 FittableDataTransformer 文档。
- n_jobs ( - int) – 并行运行的作业数。只有当- Sequence[TimeSeries]作为输入传递给方法时才会创建并行作业,从而并行化处理不同的- TimeSeries。默认为 1(顺序执行)。将参数设置为 -1 表示使用所有可用的处理器。注意:对于少量数据,并行化开销可能会增加所需的总时间。
- verbose ( - bool) – 可选,是否打印操作进度
 
 - 注意 - 如果将 - Scaler应用于多个- TimeSeries对象,则会为每个- TimeSeries实例化、拟合并存储所选 Scaler 的深度复制。- 示例 - >>> from darts.datasets import AirPassengersDataset >>> from sklearn.preprocessing import MinMaxScaler >>> from darts.dataprocessing.transformers import Scaler >>> series = AirPassengersDataset().load() >>> scaler = MinMaxScaler(feature_range=(-1, 1)) >>> transformer = Scaler(scaler) >>> series_transformed = transformer.fit_transform(series) >>> print(min(series_transformed.values())) [-1.] >>> print(max(series_transformed.values())) [2.] - 属性 - 数据转换器的名称。 - 方法 - apply_component_mask(series[, ...])- 从 series 中提取由 component_mask 指定的组件 - fit(series, *args[, component_mask])- 通过调用用户实现的 ts_fit 方法,将转换器拟合到(序列化的)TimeSeries。 - fit_transform(series, *args[, component_mask])- 将转换器拟合到(序列化的)序列并返回转换后的输入。 - inverse_transform(series, *args[, ...])- 通过调用用户实现的 ts_inverse_transform 方法,对(序列化的)序列进行逆转换。 - set_n_jobs(value)- 设置转换器处理多个 - TimeSeries时使用的处理器数量。- set_verbose(value)- 设置详细输出状态。 - stack_samples(vals)- 从 TimeSeries 或 TimeSeries 的 array_values 创建形状为 (n_timesteps * n_samples, n_components) 的数组。 - transform(series, *args[, component_mask, ...])- 通过调用用户实现的 ts_transform 方法,对(序列化的)序列进行转换。 - ts_fit(series, params, *args, **kwargs)- 调用 - fit()时将应用于每个序列的函数。- ts_inverse_transform(series, params, *args, ...)- 调用 - inverse_transform()时将应用于每个序列的函数。- ts_transform(series, params, **kwargs)- 调用 - transform()时将应用于每个序列的函数。- unapply_component_mask(series, vals[, ...])- 在 apply_component_mask 方法中添加回之前由 component_mask 移除的组件。 - unstack_samples(vals[, n_timesteps, ...])- 将 stack_samples 返回的二维数组重塑回形状为 (n_timesteps, n_components, n_samples) 的数组;这“撤销”了 stack_samples 的重塑操作。 - static apply_component_mask(series, component_mask=None, return_ts=False)¶
- 从 series 中提取由 component_mask 指定的组件 - 参数
- series ( - TimeSeries) – 输入 TimeSeries,将输入到转换器。
- component_mask ( - Optional[- ndarray,- None]) – 可选,形状为 (n_components, 1) 的布尔型 np.ndarray 掩码,指定从 series 中提取哪些组件。series 的第 i 个组件只有在 component_mask[i] = True 时才保留。如果未指定,则不执行掩码操作。
- return_ts ( - bool) – 可选,指定应返回 TimeSeries 而不是 np.ndarray。
 
- 返回
- TimeSeries(如果 return_ts = True)或 np.ndarray(如果 return_ts = False),其中只包含由 component_mask 指定的剩余组件。 
- 返回类型
- masked 
 
 - fit(series, *args, component_mask=None, **kwargs)¶
- 通过调用用户实现的 ts_fit 方法,将转换器拟合到(序列化的)TimeSeries。 - ts_fit 返回的拟合参数存储在 - self._fitted_params属性中。如果将 Sequence[TimeSeries] 作为 series 数据传递,则会发生以下两种情况之一:- 1. 如果 global_fit 属性设置为 False,则将为 Sequence 中的每个 TimeSeries 单独拟合不同的参数集。在这种情况下,此函数会自动并行化此拟合过程,处理所有传递的多个 TimeSeries。2. 如果 global_fit 属性设置为 True,则所有 TimeSeries 对象将用于拟合单个参数集。 - 参数
- series ( - Union[- TimeSeries,- Sequence[- TimeSeries]]) – 要拟合转换器的(序列化的)序列。
- args – - ts_fit()方法的其他位置参数
- component_mask (Optional[np.ndarray] = None) – 可选,一个长度为 - series.n_components的一维布尔型 np.ndarray,指定应拟合底层 series 的哪些组件。
- kwargs – - ts_fit()方法的其他关键字参数
 
- 返回
- 拟合后的转换器。 
- 返回类型
 
 - fit_transform(series, *args, component_mask=None, **kwargs)¶
- 将转换器拟合到(序列化的)序列并返回转换后的输入。 - 参数
- series ( - Union[- TimeSeries,- Sequence[- TimeSeries]]) – 要转换的(序列化的)序列。
- args – 传递给 - ts_transform()和- ts_fit()方法的其他位置参数。
- component_mask (Optional[np.ndarray] = None) – 可选,一个长度为 - series.n_components的一维布尔型 np.ndarray,指定应拟合和应用转换的底层 series 的哪些组件。
- kwargs – 传递给 - ts_transform()和- ts_fit()方法的其他关键字参数。
 
- 返回
- 转换后的数据。 
- 返回类型
- Union[TimeSeries, Sequence[TimeSeries]] 
 
 - inverse_transform(series, *args, component_mask=None, series_idx=None, **kwargs)¶
- 通过调用用户实现的 ts_inverse_transform 方法,对(序列化的)序列进行逆转换。 - 如果输入数据是序列或列表的列表,此函数负责同时并行化转换序列中的多个序列。此外,如果在实例化 InvertibleDataTransformer 时将 mask_components 属性设置为 True,则任何提供的 component_mask 将自动应用于每个输入 TimeSeries;请参阅“注意”以获取有关组件掩码的更多详细信息。 - 任何额外指定的 *args 和 **kwargs 将自动传递给 ts_inverse_transform。 - 参数
- series ( - Union[- TimeSeries,- Sequence[- TimeSeries],- Sequence[- Sequence[- TimeSeries]]]) – 要逆转换的序列(或序列的序列)。如果是单个 TimeSeries,则返回单个序列。如果是 TimeSeries 的序列,则返回序列列表。序列的顺序应与用于拟合转换器的序列相同。如果是 TimeSeries 的列表的列表,则返回序列的列表的列表。例如,当使用多个序列时,这可以是 ForecastingModel.historical_forecasts() 的输出。每个内部列表应包含与同一序列相关的 TimeSeries。内部列表的顺序应与用于拟合转换器的序列相同。
- args – - ts_inverse_transform()方法的其他位置参数
- component_mask (Optional[np.ndarray] = None) – 可选,一个长度为 - series.n_components的一维布尔型 np.ndarray,指定逆转换应考虑底层 series 的哪些组件。
- series_idx ( - Union[- int,- Sequence[- int],- None]) – 可选,每个序列在其用于拟合转换器的序列中的位置索引(用于检索适当的转换器参数)。
- kwargs – - ts_inverse_transform()方法的其他关键字参数
 
- 返回
- 逆转换后的数据。 
- 返回类型
- Union[TimeSeries, List[TimeSeries], List[List[TimeSeries]]] 
 - 注意 - 如果在实例化 InvertibleDataTransformer 时将 mask_components 属性设置为 True,则任何提供的 component_mask 将自动应用于输入到转换的每个 TimeSeries;component_mask 只是形状为 (series.n_components,) 的布尔数组,指定应使用 ts_inverse_transform 转换每个 series 的哪些组件以及不应转换哪些组件。如果 component_mask[i] 为 True,则每个 series 的第 i 个组件将由 ts_inverse_transform 转换。相反,如果 component_mask[i] 为 False,则在传递给 ts_inverse_transform 之前将从每个 series 中移除第 i 个组件;在转换此掩码系列后,未转换的第 i 个组件将“添加回”输出中。请注意,只有当 ts_inverse_transform 不改变每个序列中的时间步数时,才能执行自动 component_mask;如果改变了,则转换后的组件和未转换的组件将无法沿组件轴连接在一起。 - 如果在实例化 InvertibleDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_masks 将作为关键字参数传递给 ts_inverse_transform;然后用户可以手动指定如何将 component_mask 应用于每个序列。 
 - property name¶
- 数据转换器的名称。 
 - set_n_jobs(value)¶
- 设置转换器处理多个 - TimeSeries时使用的处理器数量。- 参数
- value ( - int) – 新的 n_jobs 值。设置为 -1 表示使用所有可用核心。
 
 - set_verbose(value)¶
- 设置详细输出状态。 - True 用于启用关于 scaler 操作进度的详细报告,False 则不提供额外信息。 - 参数
- value ( - bool) – 新的详细输出状态
 
 - static stack_samples(vals)¶
- 从 TimeSeries 或 TimeSeries 的 array_values 创建形状为 (n_timesteps * n_samples, n_components) 的数组。 - 返回数组的每一列对应于序列的一个组件(维度),并通过将该组件关联的所有样本连接起来形成。更具体地说,第 i 列是通过连接 [component_i_sample_1, component_i_sample_2, …, component_i_sample_n] 形成的。 - 在实现对时序中每个时间步应用完全相同更改的转换时,堆叠很有用。在这种情况下,可以将每个组件的样本堆叠到单个列中,然后可以将转换应用于每个列,从而将该组件的所有样本的转换“向量化”;然后可以使用 unstack_samples 方法重塑输出。对于依赖于 time_index 或观测值的时序顺序的转换,不应使用堆叠。 - 参数
- vals ( - Union[- ndarray,- TimeSeries]) – 形状为 (n_timesteps, n_components, n_samples) 的 Timeseries 或 np.ndarray,将被“堆叠”。
- 返回
- 形状为 (n_timesteps * n_samples, n_components) 的 np.ndarray,其中第 i 列是通过连接 vals 中第 i 个组件的所有样本形成的。 
- 返回类型
- stacked 
 
 - transform(series, *args, component_mask=None, series_idx=None, **kwargs)¶
- 通过调用用户实现的 ts_transform 方法,对(序列化的)序列进行转换。 - 如果将 - Sequence[TimeSeries]作为输入数据传递,此函数负责同时并行化转换序列中的多个序列。此外,如果在实例化 BaseDataTransformer 时将 mask_components 属性设置为 True,则任何提供的 component_mask 将自动应用于每个输入 TimeSeries;请参阅“注意”以获取有关组件掩码的更多详细信息。- 任何额外指定的 *args 和 **kwargs 将自动传递给 ts_transform。 - 参数
- series ( - Union[- TimeSeries,- Sequence[- TimeSeries]]) – 要转换的(序列化的)序列。
- args – 每次调用 - ts_transform()方法的其他位置参数
- component_mask (Optional[np.ndarray] = None) – 可选,一个长度为 - series.n_components的一维布尔型 np.ndarray,指定转换应考虑底层 series 的哪些组件。如果在实例化 BaseDataTransformer 时将 mask_components 属性设置为 True,则组件掩码将自动应用于每个 TimeSeries 输入。否则,component_mask 将作为附加关键字参数传递给 ts_transform。有关更多详细信息,请参阅“注意”。
- series_idx ( - Union[- int,- Sequence[- int],- None]) – 可选,每个序列在其用于拟合转换器的序列中的位置索引(用于检索适当的转换器参数)。
- kwargs – 每次调用 - ts_transform()方法的其他关键字参数
 
- 返回
- 转换后的数据。 
- 返回类型
- Union[TimeSeries, List[TimeSeries]] 
 - 注意 - 如果在实例化 BaseDataTransformer 时将 mask_components 属性设置为 True,则任何提供的 component_mask 将自动应用于输入到转换的每个 TimeSeries;component_mask 只是形状为 (series.n_components,) 的布尔数组,指定应使用 ts_transform 转换每个 series 的哪些组件以及不应转换哪些组件。如果 component_mask[i] 为 True,则每个 series 的第 i 个组件将由 ts_transform 转换。相反,如果 component_mask[i] 为 False,则在传递给 ts_transform 之前将从每个 series 中移除第 i 个组件;在转换此掩码系列后,未转换的第 i 个组件将“添加回”输出中。请注意,只有当 ts_transform 不改变每个序列中的时间步数时,才能执行自动 component_mask;如果改变了,则转换后的组件和未转换的组件将无法沿组件轴连接在一起。 - 如果在实例化 BaseDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_masks 将作为关键字参数传递给 ts_transform;然后用户可以手动指定如何将 component_mask 应用于每个序列。 
 - static ts_fit(series, params, *args, **kwargs)[源码]¶
- 调用 - fit()时将应用于每个序列的函数。- 如果 global_fit 属性设置为 False,则 ts_fit 应接受 TimeSeries 作为第一个参数,并返回适用于此单个 TimeSeries 的参数集。相反,如果 global_fit 属性设置为 True,则 ts_fit 应接受 Sequence[TimeSeries],并返回适用于所有提供的 TimeSeries 的参数集。所有这些参数将存储在 - self._fitted_params属性中,以后可在转换步骤中使用。- 无论 global_fit 属性是设置为 True 还是 False,ts_fit 还应接受固定参数值字典作为第二个参数(即 params['fixed'] 包含数据转换器的固定参数)。 - 传递给 fit 方法的任何其他位置参数和/或关键字参数将作为位置/关键字参数传递给 ts_fit。 - 此方法在基类中未实现,必须在派生类中实现。 - 如果在派生类中添加了更多输入参数,则应相应地重新定义 - _fit_iterator(),以便向此函数提供必要的参数(有关更多详细信息,请参阅- _fit_iterator())- 参数
- (Union[TimeSeries (series) – Scaler 将对其进行拟合的 TimeSeries。 
- Sequence[TimeSeries]]) – Scaler 将对其进行拟合的 TimeSeries。 
 
 - 注意 - 此方法被设计为静态方法而不是实例方法,以便在 Scaler 实例存储的数据量不可忽略时也能实现高效并行化。使用实例方法意味着通过多个进程复制实例数据,这很容易引入瓶颈并抵消并行化带来的好处。 - 返回类型
- Any
 
 - static ts_inverse_transform(series, params, *args, **kwargs)[源码]¶
- 调用 - inverse_transform()时将应用于每个序列的函数。- 该函数必须将 - TimeSeries对象作为第一个参数,并将包含转换的固定参数和/或拟合参数的字典作为第二个参数;然后该函数应返回一个逆转换的- TimeSeries对象(即 ts_inverse_transform 应该“撤销” ts_transform 执行的转换)。- params 字典 *可以* 包含最多两个键
- 1. params['fixed'] 存储转换的固定参数(即在子类中调用 super().__init__ *之前* 定义的属性);params['fixed'] 本身是一个字典,其键是固定参数属性的名称。例如,如果在子类中将 _my_fixed_param 定义为属性,则可以通过 params['fixed']['_my_fixed_param'] 访问此固定参数值。2. 如果转换继承自 - FittableDataTransformer类,则 params['fitted'] 将存储转换的拟合参数;拟合参数只是 ts_fit 函数返回的输出(无论输出是什么)。有关拟合参数的更多详细信息,请参阅- FittableDataTransformer。
 - 提供给 transform 方法的任何位置参数/关键字参数都将作为位置参数/关键字参数传递给 ts_inverse_transform;因此,如果位置参数/关键字参数传递给 transform,ts_inverse_transform 也应接受 *args 和/或 **kwargs。请注意,如果 InvertibleDataTransformer 的 mask_components 属性设置为 False,则提供给 transform 的 component_mask 将作为附加关键字参数传递给 ts_inverse_transform。 - BaseDataTransformer 类是 InvertibleDataTransformer 的父类,其中包含一些在实现 ts_inverse_transform 函数时可能有用的辅助方法 - 1. apply_component_mask 和 unapply_component_mask 方法,它们分别将 component_mask 应用于和“撤销”应用于 TimeSeries;如果在实例化 InvertibleDataTransformer 时将 mask_component 属性设置为 True,这些方法会在 transform 中自动调用,但如果将 mask_components 设置为 False 并且希望手动指定如何将 component_mask 应用于 TimeSeries,则可能需要手动调用它们。2. stack_samples 方法,它将 TimeSeries 中的所有样本沿组件轴堆叠,使 TimeSeries 的形状从 (n_timesteps, n_components, n_samples) 变为 (n_timesteps, n_components * n_samples)。如果正在实现逐点逆转换(即在时间 t 的值的转换仅取决于序列在该时间 t 的值),这种堆叠很有用。转换后,可以使用 unstack_samples 方法“撤销堆叠”堆叠的 TimeSeries。 - 此方法在基类中未实现,必须在派生类中实现。 - 参数
- series ( - TimeSeries) – 要转换的序列。
- params ( - Mapping[- str,- Any]) – 包含转换函数参数的字典。固定参数(即在调用 super.__init__() 之前在转换的最子类中定义的属性)存储在 'fixed' 键下。如果转换继承自 FittableDataTransformer 类,则转换的拟合参数(即 ts_fit 返回的值)存储在 'fitted' 键下。
- args – 提供给 inverse_transform 的任何附加关键字参数。 
- kwargs – 提供给 inverse_transform 的任何附加关键字参数。请注意,如果 InvertibleDataTransformer 的 mask_component 属性设置为 False,则 component_mask 将作为关键字参数传递。 
 
 - 注意 - 此方法被设计为静态方法而不是实例方法,以便在 Scaler 实例存储的数据量不可忽略时也能实现高效并行化。使用实例方法意味着通过多个进程复制实例数据,这很容易引入瓶颈并抵消并行化带来的好处。 - 返回类型
 
 - static ts_transform(series, params, **kwargs)[源码]¶
- 调用 - transform()时将应用于每个序列的函数。- 此方法在基类中未实现,必须在派生类中实现。 - 该函数必须将 - TimeSeries对象作为第一个参数,并将包含转换的固定参数和/或拟合参数的字典作为第二个参数;然后该函数应返回一个转换后的- TimeSeries对象。- params 字典 *可以* 包含最多两个键
- 1. params['fixed'] 存储转换的固定参数(即在子类中调用 super().__init__ *之前* 定义的属性);params['fixed'] 本身是一个字典,其键是固定参数属性的名称。例如,如果在子类中将 _my_fixed_param 定义为属性,则可以通过 params['fixed']['_my_fixed_param'] 访问此固定参数值。2. 如果转换继承自 - FittableDataTransformer类,则 params['fitted'] 将存储转换的拟合参数;拟合参数只是 ts_fit 函数返回的输出(无论输出是什么)。有关拟合参数的更多详细信息,请参阅- FittableDataTransformer。
 - 提供给 transform 方法的任何位置参数/关键字参数都将作为位置参数/关键字参数传递给 ts_transform;因此,如果位置参数/关键字参数传递给 transform,ts_transform 也应接受 *args 和/或 **kwargs。请注意,如果 BaseDataTransformer 的 mask_components 属性设置为 False,则提供给 transform 的 component_mask 将作为附加关键字参数传递给 ts_transform。 - BaseDataTransformer 类包含一些在实现 ts_transform 函数时可能有用的辅助方法 - 1. apply_component_mask 和 unapply_component_mask 方法,它们分别将 component_mask 应用于和“撤销”应用于 TimeSeries;如果在实例化 BaseDataTransformer 时将 mask_component 属性设置为 True,这些方法会在 transform 中自动调用,但如果将 mask_components 设置为 False 并且希望手动指定如何将 component_mask 应用于 TimeSeries,则可能需要手动调用它们。2. stack_samples 方法,它将 TimeSeries 中的所有样本沿组件轴堆叠,使 TimeSeries 的形状从 (n_timesteps, n_components, n_samples) 变为 (n_timesteps, n_components * n_samples)。如果正在实现逐点转换(即在时间 t 的值的转换仅取决于序列在该时间 t 的值),这种堆叠很有用。转换后,可以使用 unstack_samples 方法“撤销堆叠”堆叠的 TimeSeries。 - 参数
- series ( - TimeSeries) – 要转换的序列。
- params ( - Mapping[- str,- Any]) – 包含转换函数参数的字典。固定参数(即在调用 super.__init__() 之前在转换的最子类中定义的属性)存储在 'fixed' 键下。如果转换继承自 FittableDataTransformer 类,则转换的拟合参数(即 ts_fit 返回的值)存储在 'fitted' 键下。
- args – 调用时除了 series 外提供的任何位置参数 
- kwargs – 提供给 transform 的任何附加关键字参数。请注意,如果 BaseDataTransformer 的 mask_component 属性设置为 False,则 component_mask 将作为关键字参数传递。 
 
 - 注意 - 此方法被设计为静态方法而不是实例方法,以便在 Scaler 实例存储的数据量不可忽略时也能实现高效并行化。使用实例方法意味着通过多个进程复制实例数据,这很容易引入瓶颈并抵消并行化带来的好处。 - 返回类型
 
 - static unapply_component_mask(series, vals, component_mask=None)¶
- 在 apply_component_mask 方法中添加回之前由 component_mask 移除的组件。 - 参数
- series ( - Union[- TimeSeries,- Sequence[- TimeSeries]]) – 输入到转换器的输入 TimeSeries。
- vals ( - Union[- ndarray,- Sequence[- ndarray],- TimeSeries,- Sequence[- TimeSeries]]) – 要“解除掩码”的 np.ndarray 或 TimeSeries
- component_mask ( - Optional[- ndarray,- None]) – 可选,形状为 (n_components, 1) 的布尔型 np.ndarray 掩码,指定从 series 中提取了哪些组件。如果给定,则将 vals 插回原始数组的列中。如果未指定,则不进行“解除掩码”。
 
- 返回
- TimeSeries(如果 vals 是 TimeSeries)或 np.ndarray(如果 vals 是 np.ndarray),其中之前由 component_mask 移除的组件现已“添加回”。 
- 返回类型
- unmasked 
 
 - static unstack_samples(vals, n_timesteps=None, n_samples=None, series=None)¶
- 将 stack_samples 返回的二维数组重塑回形状为 (n_timesteps, n_components, n_samples) 的数组;这“撤销”了 stack_samples 的重塑操作。n_components、n_samples 或 series 中的一个必须指定。 - 参数
- vals ( - ndarray) – 形状为 (n_timesteps * n_samples, n_components) 的 np.ndarray,将被“撤销堆叠”。
- n_timesteps ( - Optional[- int,- None]) – 可选,最初传递给 stack_samples 的数组中的时间步数。如果指定了 series,则 *无需* 提供。
- n_samples ( - Optional[- int,- None]) – 可选,最初传递给 stack_samples 的数组中的样本数。如果指定了 series,则 *无需* 提供。
- series ( - Optional[- TimeSeries,- None]) – 可选,用于创建 vals 的 TimeSeries 对象;从中推断出 n_samples。
 
- 返回
- 形状为 (n_timesteps, n_components, n_samples) 的 np.ndarray。 
- 返回类型
- unstacked