Mapper 和 InvertibleMapper¶
- class darts.dataprocessing.transformers.mappers.InvertibleMapper(fn, inverse_fn, name='InvertibleMapper', n_jobs=1, verbose=False)[源代码]¶
- 
应用自定义函数及其逆函数到(序列化的) TimeSeries的数据转换器(类似于在每个序列上调用TimeSeries.map())。- 参数
- fn ( - Union[- Callable[[- number],- number],- Callable[[- Timestamp,- number],- number]]) – 一个接受一个值并返回一个值的函数,例如 f(x) = y;或者一个接受一个值及其时间戳并返回一个值的函数,例如 f(timestamp, x) = y。
- inverse_fn ( - Union[- Callable[[- number],- number],- Callable[[- Timestamp,- number],- number]]) – 与 fn 类似,一个接受一个值并返回一个值的函数,例如 f(x) = y;或者一个接受一个值及其时间戳并返回一个值的函数,例如 f(timestamp, x) = y。inverse_fn 应该满足- inverse_fn(fn(x)) == x。
- name ( - str) – 转换器的特定名称。
- n_jobs ( - int) – 并行运行的任务数。仅当方法的输入是 Sequence[TimeSeries] 时才会创建并行任务,用于并行处理不同的 TimeSeries。默认为 1 (顺序执行)。将参数设置为 -1 表示使用所有可用的处理器。注意:对于少量数据,并行化的开销可能会增加所需的总时间。
- verbose ( - bool) – 可选参数,是否打印操作进度。
 
 示例 >>> import numpy as np >>> from darts import TimeSeries >>> from darts.dataprocessing.transformers import Mapper >>> series = TimeSeries.from_values(np.array([1e0, 1e1, 1e2, 1e3])) >>> transformer = Mapper(np.log10) >>> series_transformed = transformer.transform(series) >>> print(series_transformed) <TimeSeries (DataArray) (time: 4, component: 1, sample: 1)> array([[[0.]], [[1.]], [[2.]], [[3.]]]) Coordinates: * time (time) int64 0 1 2 3 * component (component) <U1 '0' Dimensions without coordinates: sample >>> series_restaured = transformer.inverse_transform(series_transformed) >>> print(series_restaured) <TimeSeries (DataArray) (time: 4, component: 1, sample: 1)> array([[[ 1.]], [[ 10.]], [[ 100.]], [[1000.]]]) Coordinates: * time (time) int64 0 1 2 3 * component (component) <U1 '0' Dimensions without coordinates: sample 属性 数据转换器的名称。 方法 apply_component_mask(series[, ...])从 series 中提取由 component_mask 指定的分量。 inverse_transform(series, *args[, ...])通过调用用户实现的 ts_inverse_transform 方法对(序列化的)序列进行逆转换。 set_n_jobs(value)设置转换器在处理多个 TimeSeries时使用的处理器数量。set_verbose(value)设置详细模式状态。 stack_samples(vals)从 TimeSeries 或其 array_values 创建一个形状为 (n_timesteps * n_samples, n_components) 的数组。 transform(series, *args[, component_mask, ...])通过调用用户实现的 ts_transform 方法对(序列化的)序列进行转换。 ts_inverse_transform(series, params)当调用 inverse_transform()时,将应用于每个序列的函数。ts_transform(series, params)当调用 transform()时,将应用于每个序列的函数。unapply_component_mask(series, vals[, ...])将之前在 apply_component_mask 方法中被 component_mask 移除的分量添加回来。 unstack_samples(vals[, n_timesteps, ...])将 stack_samples 返回的 2D 数组重塑回形状为 (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。
 
- 返回
- TimeSeries (如果 return_ts = True) 或 np.ndarray (如果 return_ts = False),仅包含由 component_mask 指定的分量。 
- 返回类型
- masked 
 
 - 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 将自动应用于每个输入到 transform 方法的 TimeSeries;component_mask 只是形状为 (series.n_components,) 的布尔数组,用于指定 series 的哪些分量应使用 ts_inverse_transform 进行转换,哪些不应。如果 component_mask[i] 为 True,则 series 的第 i 个分量将由 ts_inverse_transform 进行转换。相反,如果 component_mask[i] 为 False,则在传递给 ts_inverse_transform 之前,将从 series 中移除第 i 个分量;在转换此掩码序列后,未转换的第 i 个分量将“添加回”到输出中。请注意,自动 component_masking 只能在 ts_inverse_transform 不改变每个序列时间步数的情况下执行;如果时间步数发生改变,则无法将转换后和未转换的分量沿分量轴拼接回去。 - 如果在实例化 InvertibleDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_mask 将作为关键字参数传递给 ts_inverse_transform;用户可以手动指定如何将 component_mask 应用于每个序列。 
 - property name¶
- 数据转换器的名称。 
 - set_n_jobs(value)¶
- 设置转换器在处理多个 - TimeSeries时使用的处理器数量。- 参数
- value ( - int) – 新的 n_jobs 值。设置为 -1 表示使用所有可用的核心。
 
 - set_verbose(value)¶
- 设置详细模式状态。 - True 用于启用关于缩放器操作进度的详细报告,False 用于不提供额外信息。 - 参数
- value ( - bool) – 新的详细模式状态
 
 - static stack_samples(vals)¶
- 从 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)¶
- 通过调用用户实现的 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 将自动应用于每个输入到 transform 方法的 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_masking 只能在 ts_transform 不改变每个序列时间步数的情况下执行;如果时间步数发生改变,则无法将转换后和未转换的分量沿分量轴拼接回去。 - 如果在实例化 BaseDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_mask 将作为关键字参数传递给 ts_transform;用户可以手动指定如何将 component_mask 应用于每个序列。 
 - static ts_inverse_transform(series, params)[源代码]¶
- 当调用 - inverse_transform()时,将应用于每个序列的函数。- 该函数必须将 - TimeSeries对象作为第一个参数,将包含转换的固定和/或拟合参数的字典作为第二个参数;然后该函数应返回一个逆转换后的- TimeSeries对象(即 ts_inverse_transform 应该“撤销”由 ts_transform 执行的转换)。- params 字典最多可以包含两个键
- 1. params[‘fixed’] 存储转换的固定参数(即在调用 super().__init__ 之前在最底层的子类的 __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。 - InvertibleDataTransformer 继承自 BaseDataTransformer 类,该类包含一些辅助方法,这些方法在实现 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,- Mapping[- str,- Union[- Callable[[- number],- number],- Callable[[- Timestamp,- number],- number]]]]) – 包含转换函数参数的字典。固定参数(即在调用 super.__init__() 之前在转换的最底层的子类中定义的属性)存储在 ‘fixed’ 键下。如果转换继承自 FittableDataTransformer 类,则转换的拟合参数(即 ts_fit 返回的值)存储在 ‘fitted’ 键下。
- args – 提供给 inverse_transform 的任何额外位置参数。 
- kwargs – 提供给 inverse_transform 的任何额外关键字参数。请注意,如果在 InvertibleDataTransformer 中将 mask_component 属性设置为 False,则 component_mask 将作为关键字参数传递。 
 
 - 注意事项 - 此方法被设计为静态方法而非实例方法,以便在缩放器实例存储大量数据时也能实现高效并行化。使用实例方法意味着在多个进程中复制实例的数据,这很容易引入瓶颈并抵消并行化的好处。 - 返回类型
 
 - static ts_transform(series, params)[源代码]¶
- 当调用 - transform()时,将应用于每个序列的函数。- 此方法未在基类中实现,必须在派生类中实现。 - 该函数必须将 - TimeSeries对象作为第一个参数,将包含转换的固定和/或拟合参数的字典作为第二个参数;然后该函数应返回一个转换后的- TimeSeries对象。- params 字典最多可以包含两个键
- 1. params[‘fixed’] 存储转换的固定参数(即在调用 super().__init__ 之前在最底层的子类的 __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,- Mapping[- str,- Union[- Callable[[- number],- number],- Callable[[- Timestamp,- number],- number]]]]) – 包含转换函数参数的字典。固定参数(即在调用 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 插回原始数组的列中。如果未指定,则不执行“取消掩码”操作。
 
- 返回
- 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 返回的 2D 数组重塑回形状为 (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 
 
 
- class darts.dataprocessing.transformers.mappers.Mapper(fn, name='Mapper', n_jobs=1, verbose=False)[源代码]¶
- 
应用自定义函数到(序列化的) TimeSeries的数据转换器(类似于在每个序列上调用TimeSeries.map())。该映射器负责在多个处理器上并行化对多个序列的操作。 - 参数
- fn ( - Union[- Callable[[- number],- number],- Callable[[- Timestamp,- number],- number]]) – 一个接受一个值并返回一个值的函数,例如 f(x) = y;或者一个接受一个值及其时间戳并返回一个值的函数,例如 f(timestamp, x) = y。
- name ( - str) – 转换器的特定名称。
- n_jobs ( - int) – 并行运行的任务数。仅当方法的输入是- Sequence[TimeSeries]时才会创建并行任务,用于并行处理不同的- TimeSeries。默认为 1 (顺序执行)。将参数设置为 -1 表示使用所有可用的处理器。注意:对于少量数据,并行化的开销可能会增加所需的总时间。
- verbose ( - bool) – 可选参数,是否打印操作进度。
 
 示例 >>> import numpy as np >>> from darts import TimeSeries >>> from darts.dataprocessing.transformers import InvertibleMapper >>> series = TimeSeries.from_values(np.array([1e0, 1e1, 1e2, 1e3])) >>> transformer = InvertibleMapper(np.log10, lambda x: 10**x) >>> series_transformed = transformer.transform(series) >>> print(series_transformed) <TimeSeries (DataArray) (time: 4, component: 1, sample: 1)> array([[[0.]], [[1.]], [[2.]], [[3.]]]) Coordinates: * time (time) int64 0 1 2 3 * component (component) <U1 '0' Dimensions without coordinates: sample 属性 数据转换器的名称。 方法 apply_component_mask(series[, ...])从 series 中提取由 component_mask 指定的分量。 set_n_jobs(value)设置转换器在处理多个 TimeSeries时使用的处理器数量。set_verbose(value)设置详细模式状态。 stack_samples(vals)从 TimeSeries 或其 array_values 创建一个形状为 (n_timesteps * n_samples, n_components) 的数组。 transform(series, *args[, component_mask, ...])通过调用用户实现的 ts_transform 方法对(序列化的)序列进行转换。 ts_transform(series, params)当调用 transform()时,将应用于每个序列的函数。unapply_component_mask(series, vals[, ...])将之前在 apply_component_mask 方法中被 component_mask 移除的分量添加回来。 unstack_samples(vals[, n_timesteps, ...])将 stack_samples 返回的 2D 数组重塑回形状为 (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。
 
- 返回
- TimeSeries (如果 return_ts = True) 或 np.ndarray (如果 return_ts = False),仅包含由 component_mask 指定的分量。 
- 返回类型
- masked 
 
 - property name¶
- 数据转换器的名称。 
 - set_n_jobs(value)¶
- 设置转换器在处理多个 - TimeSeries时使用的处理器数量。- 参数
- value ( - int) – 新的 n_jobs 值。设置为 -1 表示使用所有可用的核心。
 
 - set_verbose(value)¶
- 设置详细模式状态。 - True 用于启用关于缩放器操作进度的详细报告,False 用于不提供额外信息。 - 参数
- value ( - bool) – 新的详细模式状态
 
 - static stack_samples(vals)¶
- 从 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)¶
- 通过调用用户实现的 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 将自动应用于每个输入到 transform 方法的 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_masking 只能在 ts_transform 不改变每个序列时间步数的情况下执行;如果时间步数发生改变,则无法将转换后和未转换的分量沿分量轴拼接回去。 - 如果在实例化 BaseDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_mask 将作为关键字参数传递给 ts_transform;用户可以手动指定如何将 component_mask 应用于每个序列。 
 - static ts_transform(series, params)[源代码]¶
- 当调用 - transform()时,将应用于每个序列的函数。- 此方法未在基类中实现,必须在派生类中实现。 - 该函数必须将 - TimeSeries对象作为第一个参数,将包含转换的固定和/或拟合参数的字典作为第二个参数;然后该函数应返回一个转换后的- TimeSeries对象。- params 字典最多可以包含两个键
- 1. params[‘fixed’] 存储转换的固定参数(即在调用 super().__init__ 之前在最底层的子类的 __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 将作为关键字参数传递。 
 
 - 注意事项 - 此方法被设计为静态方法而非实例方法,以便在缩放器实例存储大量数据时也能实现高效并行化。使用实例方法意味着在多个进程中复制实例的数据,这很容易引入瓶颈并抵消并行化的好处。 - 返回类型
 
 - 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 返回的 2D 数组重塑回形状为 (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