缺失值填充器

class darts.dataprocessing.transformers.missing_values_filler.MissingValuesFiller(fill='auto', name='MissingValuesFiller', n_jobs=1, verbose=False)[源代码]

基类: BaseDataTransformer

用于填充确定性 TimeSeries(或其序列)中缺失值的数据转换器。

参数
  • fill (Union[str, float]) – 用于替换缺失值的值。如果设置为 ‘auto’,将使用 pd.Dataframe.interpolate() 方法自动填充缺失值。

  • 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 MissingValuesFiller
>>> values = np.arange(start=0, stop=1, step=0.1)
>>> values[5:8] = np.nan
>>> series = TimeSeries.from_values(values)
>>> transformer = MissingValuesFiller()
>>> series_filled = transformer.transform(series)
>>> print(series_filled)
<TimeSeries (DataArray) (time: 10, component: 1, sample: 1)>
array([[[0. ]],
    [[0.1]],
    [[0.2]],
    [[0.3]],
    [[0.4]],
    [[0.5]],
    [[0.6]],
    [[0.7]],
    [[0.8]],
    [[0.9]]])
Coordinates:
* time       (time) int64 0 1 2 3 4 5 6 7 8 9
* component  (component) object '0'
Dimensions without coordinates: sample

属性

name

数据转换器的名称。

方法

apply_component_mask(series[, ...])

series 中提取 component_mask 指定的分量。

set_n_jobs(value)

设置转换器在处理多个 TimeSeries 时使用的处理器数量。

set_verbose(value)

设置详细输出状态。

stack_samples(vals)

TimeSeriesTimeSeriesarray_values 创建形状为 (n_timesteps * n_samples, n_components) 的数组。

transform(series, *args[, component_mask, ...])

通过调用用户实现的 ts_transform 方法转换一个(或一个序列)时序。

ts_transform(series, params, **kwargs)

当调用 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`th 个分量才会被保留。如果未指定,则不执行掩码操作。

  • return_ts (bool) – 可选参数,指定应返回 TimeSeries 而不是 np.ndarray

返回值

仅包含 component_mask 指定的分量的 TimeSeries (如果 return_ts = True) 或 np.ndarray (如果 return_ts = False)。

返回类型

masked

property name

数据转换器的名称。

set_n_jobs(value)

设置转换器在处理多个 TimeSeries 时使用的处理器数量。

参数

value (int) – 新的 n_jobs 值。设置为 -1 以使用所有可用的核心。

set_verbose(value)

设置详细输出状态。

设置为 True 启用缩放器操作进度的详细报告,设置为 False 则不提供额外信息。

参数

value (bool) – 新的详细输出状态

static stack_samples(vals)

TimeSeriesTimeSeriesarray_values 创建形状为 (n_timesteps * n_samples, n_components) 的数组。

返回数组的每一列对应于时序的一个分量(维度),由该分量的所有样本串联而成。更具体地说,第 i`th 列由 [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)Timeseriesnp.ndarray

返回值

形状为 (n_timesteps * n_samples, n_components)np.ndarray,其中第 i`th 列由 vals 中第 i`th 个分量的所有样本串联而成。

返回类型

stacked

transform(series, *args, component_mask=None, series_idx=None, **kwargs)

通过调用用户实现的 ts_transform 方法转换一个(或一个序列)时序。

如果输入数据是 Sequence[TimeSeries],此函数负责并行转换序列中的多个时序。此外,如果在实例化 BaseDataTransformer 时将 mask_components 属性设置为 True,则任何提供的 component_mask`s 将自动应用于每个输入 TimeSeries;有关分量掩码的更多详细信息,请参阅“注意”。

任何额外指定的 *args**kwargs 都将自动传递给 ts_transform

参数
  • series (Union[TimeSeries, Sequence[TimeSeries]]) – 要转换的(序列)时序。

  • args – 每次调用 ts_transform() 方法的附加位置参数。

  • component_mask (Optional[np.ndarray] = None) – 可选参数,一个长度为 series.n_components 的 1-D 布尔型 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`s 将自动应用于传递给 transform 的每个 TimeSeries 输入;component_mask`s 只是形状为 (series.n_components,) 的布尔数组,用于指定应该使用 ts_transform 转换 series 的哪些分量以及不应该转换哪些分量。如果 component_mask[i]True,则每个 series 的第 i`th 个分量将由 ts_transform 转换。相反,如果 component_mask[i]False,则在传递给 ts_transform 之前,每个 series 的第 i`th 个分量将被移除;在转换此被掩码的时序后,未转换的第 i`th 个分量将被“添加回”到输出中。请注意,只有当 ts_transform 不改变每个时序的时间步数时,才能执行自动 component_mask`ing;如果发生变化,则无法将转换后的分量和未转换的分量沿分量轴串联回一起。

如果在实例化 BaseDataTransformer 时将 mask_components 设置为 False,则任何提供的 component_masks 将作为关键字参数传递给 ts_transform;然后用户可以手动指定应如何将 component_mask 应用于每个时序。

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;因此,如果位置/关键字参数传递给 transformts_transform 也应该接受 *args 和/或 **kwargs。请注意,如果 BaseDataTransformermask_components 属性设置为 False,则提供给 transformcomponent_mask 将作为附加关键字参数传递给 ts_transform

BaseDataTransformer 类包含一些辅助方法,这些方法在实现 ts_transform 函数时可能很有用

1. apply_component_maskunapply_component_mask 方法,分别应用于和“撤销”对 TimeSeriescomponent_mask`s;如果在实例化 BaseDataTransformer 时将 mask_component 属性设置为 True,这些方法将自动在 transform 中调用,但如果您将 mask_components 设置为 False 并希望手动指定如何将 component_mask`s 应用于 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 – 调用 transform 时除 series 外提供的任何位置参数。

  • kwargs – 提供给 transform 的任何附加关键字参数。请注意,如果 BaseDataTransformermask_component 属性设置为 False,则 component_mask 将作为关键字参数传递。

注意

此方法被设计为静态方法而不是实例方法,以便在缩放器实例存储非少量数据时也能实现高效的并行化。使用实例方法意味着在多个进程中复制实例的数据,这很容易引入瓶颈并抵消并行化的好处。

返回类型

TimeSeries

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.ndarrayTimeSeries

  • component_mask (Optional[ndarray, None]) – 可选参数,形状为 (n_components, 1) 的 np.ndarray 布尔掩码,用于指定从 series 中提取了哪些分量。如果给定,将 vals 插入回原始数组的列中。如果未指定,则不执行“取消掩码”操作。

返回值

将之前由 component_mask 移除的分量“添加回”后的 TimeSeries (如果 valsTimeSeries) 或 np.ndarray (如果 valsnp.ndarray)。

返回类型

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_componentsn_samplesseries 中的至少一个。

参数
  • 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]) – 可选参数,用于创建 valsTimeSeries 对象;从中推断出 n_samples

返回值

形状为 (n_timesteps, n_components, n_samples)np.ndarray

返回类型

unstacked