可拟合数据转换器基类¶
- class darts.dataprocessing.transformers.fittable_data_transformer.FittableDataTransformer(name='FittableDataTransformer', n_jobs=1, verbose=False, parallel_params=False, mask_components=True, global_fit=False)[source]¶
- 
可拟合转换器的基类。 所有派生类都必须实现静态方法 ts_transform()和ts_fit()。拟合和转换函数必须在转换器初始化时传递。当可能时,此基类负责并行化涉及多个TimeSeries的操作。- 参数
- name ( - str) – 数据转换器的名称
- n_jobs ( - int) – 并行运行的作业数。仅当将 Sequence[TimeSeries] 作为输入传递给方法时,才会创建并行作业,以并行化处理不同的 TimeSeries。默认为 1 (顺序执行)。将参数设置为 -1 表示使用所有可用的处理器。注意:对于少量数据,并行化的开销可能会增加总所需时间。
- verbose ( - bool) – 可选,是否打印操作进度
- parallel_params ( - Union[- bool,- Sequence[- str]]) – 可选,指定哪些固定参数(即在最末端派生类的 __init__ 中初始化的属性)在不同的并行作业中取不同的值。由 parallel_params 指定的固定参数假定为一个值 Sequence,该值应在每个并行作业中用于该参数;此 Sequence 的长度应等于并行作业的数量。如果 parallel_params=True,则每个固定参数在每个并行作业中都将取不同的值。如果 parallel_params=False,则每个固定参数在每个并行作业中都将取相同的值。如果 parallel_params 是固定属性名称的 Sequence,则只有指定的属性名称在不同的并行作业之间取不同的值。
- mask_components ( - bool) – 可选,是否自动将提供的任何 component_mask 应用于传递给 transform、fit、inverse_transform 或 fit_transform 的 TimeSeries 输入。如果为 True,则在将每个输入时间序列传递给调用的方法之前,将应用任何指定的 component_mask;遮罩的组件也将在返回的 TimeSeries 中自动“解除遮罩”。如果为 False,则 component_mask(如果提供)将作为关键字参数传递,但不会自动应用于输入时间序列。有关更多详细信息,请参阅 BaseDataTransformer 的 apply_component_mask 方法。
- global_fit ( - bool) – 可选,传递给 fit() 方法的所有 TimeSeries 是否应该用于拟合单个参数集,或者是否应该独立地为每个提供的 TimeSeries 拟合一组不同的参数。如果为 True,则将 Sequence[TimeSeries] 传递给 ts_fit,并使用所有提供的 TimeSeries 拟合单个参数集。如果为 False,则将每个 TimeSeries 单独传递给 ts_fit,并为每个拟合操作生成一组不同的拟合参数。有关更多详细信息,请参阅 ts_fit。
 
 注意 如果 global_fit 为 False 且 fit 调用时包含一个包含 n 个不同 TimeSeries 的 Sequence,则将拟合 n 组参数。随后调用 transform 和/或 inverse_transform 并传入 Series[TimeSeries] 时,第 i 组拟合参数值将传递给 ts_transform/ts_inverse_transform 以转换该序列中的第 i 个 TimeSeries。相反,如果 global_fit 为 True,则当 fit 传入 Sequence[TimeSeries] 时,只会生成一个拟合值集。因此,如果随后将 Sequence[TimeSeries] 传递给 transform/inverse_transform,则每个 TimeSeries 都将使用完全相同的拟合参数集进行转换。 注意,如果要全局拟合可逆且可拟合的数据转换器,则数据转换器类应首先继承自 FittableDataTransformer,然后再继承自 InvertibleDataTransformer。换句话说,MyTransformer(FittableDataTransformer, InvertibleDataTransformer) 是正确的,但 MyTransformer(InvertibleDataTransformer, FittableDataTransformer) 是不正确的。如果实现不正确,则 global_fit 参数将无法正确传递给 FittableDataTransformer 的构造函数。 将 ts_transform()和ts_fit()方法设计为静态方法而非实例方法,是为了在定标器实例存储大量数据时也能实现高效并行化。使用实例方法意味着在多个进程之间复制实例数据,这很容易引入瓶颈并抵消并行化的好处。示例 >>> from darts.dataprocessing.transformers import FittableDataTransformer >>> from darts.utils.timeseries_generation import linear_timeseries >>> >>> class SimpleRangeScaler(FittableDataTransformer): >>> >>> def __init__(self, scale, position): >>> self._scale = scale >>> self._position = position >>> super().__init__() >>> >>> @staticmethod >>> def ts_transform(series, params): >>> vals = series.all_values(copy=False) >>> fit_params = params['fitted'] >>> unit_scale = (vals - fit_params['position'])/fit_params['scale'] >>> fix_params = params['fixed'] >>> rescaled = fix_params['_scale'] * unit_scale + fix_params['_position'] >>> return series.from_values(rescaled) >>> >>> @staticmethod >>> def ts_fit(series, params): >>> vals = series.all_values(copy=False) >>> scale = vals.max() - vals.min() >>> position = vals[0] >>> return {'scale': scale, 'position': position} >>> >>> series = linear_timeseries(length=5, start_value=1, end_value=5) >>> print(series) <TimeSeries (DataArray) (time: 5, component: 1, sample: 1)> array([[[1.]], [[2.]], [[3.]], [[4.]], [[5.]]]) 坐标: * time (time) datetime64[ns] 2000-01-01 2000-01-02 … 2000-01-05 * component (component) object ‘linear’ 无坐标维度: sample .. 属性:: static_covariates None - hierarchy¶
- None 
 >>> series = SimpleRangeScaler(scale=2, position=-1).fit_transform(series) >>> print(series) <TimeSeries (DataArray) (time: 5, component: 1, sample: 1)> array([[[-1. ]], [[-0.5]], [[ 0. ]], [[ 0.5]], [[ 1. ]]]) 坐标: * time (time) int64 0 1 2 3 4 * component (component) <U1 ‘0’ 无坐标维度: sample .. 属性:: static_covariates None - hierarchy¶
- None 
 属性 数据转换器的名称。 方法 apply_component_mask(series[, ...])从 series 中提取由 component_mask 指定的组件 fit(series, *args[, component_mask])通过调用用户实现的 ts_fit 方法,将转换器拟合到(序列)TimeSeries。 fit_transform(series, *args[, component_mask])将转换器拟合到(序列)序列并返回转换后的输入。 set_n_jobs(value)设置转换器处理多个 TimeSeries时使用的处理器数量。set_verbose(value)设置为 True 启用关于定标器操作进度的详细报告,设置为 False 不提供额外信息。 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_transform(series, params)调用 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 中提取哪些组件。仅当 component_mask[i] = True 时,保留 series 的第 i 个组件。如果未指定,则不执行遮罩。
- return_ts ( - bool) – 可选,指定应返回 TimeSeries 而非 np.ndarray。
 
- 返回
- 保留由 component_mask 指定的组件的 TimeSeries(如果 return_ts = True)或 np.ndarray(如果 return_ts = False)。 
- 返回类型
- masked 
 
 - fit(series, *args, component_mask=None, **kwargs)[source]¶
- 通过调用用户实现的 ts_fit 方法,将转换器拟合到(序列)TimeSeries。 - 由 ts_fit 返回的拟合参数存储在 - self._fitted_params属性中。如果 series 数据作为 Sequence[TimeSeries] 传递,则会发生以下两种情况之一:- 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)[source]¶
- 将转换器拟合到(序列)序列并返回转换后的输入。 - 参数
- 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]] 
 
 - property name¶
- 数据转换器的名称。 
 - 数据转换器的名称。
- 设置转换器处理多个 - TimeSeries时使用的处理器数量。- 参数
- value ( - int) – 新的 n_jobs 值。设置为 -1 以使用所有可用核心。
 
 - set_verbose(value)¶
- 设置为 True 启用关于定标器操作进度的详细报告,设置为 False 不提供额外信息。 - 设置为 True 启用关于定标器操作进度的详细报告,设置为 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]) – 要“堆叠”的 Timeseries 或形状为 (n_timesteps, n_components, n_samples) 的 np.ndarray。
- 返回
- 形状为 (n_timesteps * n_samples, n_components) 的 np.ndarray,其中第 i 列由连接 vals 中第 i 个组件的所有样本形成。 
- 返回类型
- stacked 
 
 - transform(series, *args, component_mask=None, series_idx=None, **kwargs)[source]¶
- 通过调用用户实现的 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,) 的布尔数组,指定每个 series 的哪些组件应使用 ts_transform 进行转换,哪些不应。如果 component_mask[i] 为 True,则每个 series 的第 i 个组件将由 ts_transform 转换。相反,如果 component_mask[i] 为 False,则在传递给 ts_transform 之前将从每个 series 中删除第 i 个组件;转换此遮罩序列后,未转换的第 i 个组件将被“添加回”输出。请注意,自动 component_mask 仅当 ts_transform 不改变每个序列的时间步数时才能执行;如果发生这种情况,则转换和未转换的组件将无法沿组件轴重新连接在一起。 - 如果在实例化 BaseDataTransformer 时将 mask_components 设置为 False,则提供的任何 component_masks 将作为关键字参数传递给 ts_transform;然后用户可以手动指定如何将 component_mask 应用于每个序列。 
 - abstract static ts_fit(series, params, *args, **kwargs)[source]¶
- 调用 - 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) – 定标器将拟合的 TimeSeries。 
- Sequence[TimeSeries]]) – 定标器将拟合的 TimeSeries。 
 
 - 注意 - 此方法设计为静态方法而非实例方法,是为了在定标器实例存储大量数据时也能实现高效并行化。使用实例方法意味着在多个进程之间复制实例数据,这很容易引入瓶颈并抵消并行化的好处。 
 - abstract static ts_transform(series, params)¶
- 调用 - 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 方法,分别对 TimeSeries 应用和“解除应用”component_mask;如果 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 将作为关键字参数传递。 
 
 - 注意 - 此方法设计为静态方法而非实例方法,是为了在定标器实例存储大量数据时也能实现高效并行化。使用实例方法意味着在多个进程之间复制实例数据,这很容易引入瓶颈并抵消并行化的好处。 - 返回类型
 
 - 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 插回到原始数组的列中。如果未指定,则不进行任何“解除遮罩”。
 
- 返回
- 将先前由 component_mask 移除的组件“添加回来”的 TimeSeries(如果 vals 是 TimeSeries)或 np.ndarray(如果 vals 是 np.ndarray)。 
- 返回类型
- 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