动态时间规整 (DTW)

class darts.dataprocessing.dtw.dtw.DTWAlignment(series1, series2, cost)[source]

基类:object

动态时间规整 (DTW) 对齐。

n

series1 的长度

类型

int

m

series2 的长度

类型

int

series1

要与 series2 对齐的 TimeSeries

类型

darts.timeseries.TimeSeries

series2

要与 series1 对齐的 TimeSeries

类型

darts.timeseries.TimeSeries

cost

DTW 的 CostMatrix

类型

darts.dataprocessing.dtw.cost_matrix.CostMatrix

方法

distance()

返回规整后两个序列中成对元素的总距离。

mean_distance()

返回规整后两个序列中成对元素的平均距离。

path()

返回从 series1series2 的索引路径。

plot([new_plot, show_series, show_cost, ...])

绘制规整路径。

plot_alignment([new_plot, series1_y_offset, ...])

绘制每个序列的单变量分量,其间的连线表示 DTW 算法选择的对齐方式。

warped()

根据 DTWAlignment.path() 返回的规整路径对两个时序进行规整,该路径最小化了成对距离。

cost: CostMatrix
distance()[source]

返回规整后两个序列中成对元素的总距离。

返回值

规整后两个序列中成对元素的总距离。

返回类型

float

m: int
mean_distance()[source]

返回规整后两个序列中成对元素的平均距离。

返回值

规整后两个序列中成对元素的平均距离。

返回类型

float

n: int
path()[source]

返回从 series1series2 的索引路径。

返回值

索引数组 [[i0,j0], [i1,j1], [i2,j2], …],其中 i 是 series1 的索引,j 是 series2 的索引。索引按单调递增顺序排列,path[n] >= path[n-1]。

返回类型

形状为 (len(path), 2) 的 np.ndarray

plot(new_plot=False, show_series=False, show_cost=True, cost_cmap='summer', args_path={}, args_cost={}, args_series1={}, args_series2={})

绘制规整路径。

参数
  • new_plot (bool) – 布尔值,指示是否生成新的图。

  • show_series (bool) – 布尔值,指示是否额外绘制两个时序。series1 将绘制在成本矩阵下方,series2 将绘制在成本矩阵左侧。

  • show_cost (bool) – 布尔值,指示是否额外绘制成本矩阵。成本矩阵将以热力图形式显示。对于可视化窗口函数的效果很有用。

  • cost_cmap (str) – 成本矩阵图的颜色映射样式

  • args_path (dict) – 传递给规整路径 plot() 函数的一些关键字参数

  • args_cost (dict) – 传递给成本矩阵 imshow 函数的一些关键字参数

  • args_series1 (dict) – 传递给 series1 的 plot() 方法的一些关键字参数

  • args_series2 (dict) – 传递给 series2 的 plot() 方法的一些关键字参数

plot_alignment(new_plot=False, series1_y_offset=0, series2_y_offset=0, components=(0, 0), args_line={}, args_series1={}, args_series2={})

绘制每个序列的单变量分量,其间的连线表示 DTW 算法选择的对齐方式。

参数
  • new_plot (bool) – 是否生成新的 Figure

  • series2_y_offset (float) – 垂直偏移 series1 以方便查看。

  • series1_y_offset (float) – 垂直偏移 series2 以方便查看。

  • components (tuple[Union[str, int], Union[str, int]]) – series1 的分量索引和 series2 的分量索引组成的元组。

  • args_line (dict) – 传递给线的 plot() 方法的一些关键字参数

  • args_series1 (dict) – 传递给 series1 的 plot() 方法的一些关键字参数

  • args_series2 (dict) – 传递给 series2 的 plot() 方法的一些关键字参数

series1: TimeSeries
series2: TimeSeries
warped()[source]

根据 DTWAlignment.path() 返回的规整路径对两个时序进行规整,该路径最小化了成对距离。这会将两个异相的时序调整为同相。

返回值

两个长度相同、由 pd.RangeIndex 索引的新 TimeSeries 实例。

返回类型

(TimeSeries, TimeSeries)

darts.dataprocessing.dtw.dtw.dtw(series1, series2, window=None, distance=None, multi_grid_radius=- 1)[source]

根据动态时间规整算法,确定两个时序 series1series2 之间的最优对齐方式。该对齐方式使规整后成对元素之间的距离最小化。两个序列中的所有元素都进行匹配,并且顺序严格单调递增。只考虑序列中的值,忽略时间轴。

动态时间规整可用于确定两个时序的对应紧密程度,而无需考虑相位、长度或速度差异。

参数
  • series1 (TimeSeries) – 要与 series2 对齐的 TimeSeries

  • series2 (TimeSeries) – 要与 series1 对齐的 TimeSeries

  • window (Optional[Window, None]) – 可选参数,用于约束最优对齐搜索的 Window:参见 SakoeChibaItakura。默认为考虑所有可能的对齐 (NoWindow)。

  • distance (Optional[Callable[[Union[ndarray, floating], Union[ndarray, floating]], float], None]) –

    输入为单变量序列的两个 float 或两个 np.ndarray,并返回它们之间距离的函数。

    单变量数据默认为绝对差,多变量序列默认为绝对差之和。

  • multi_grid_radius (int) –

    默认半径 -1 会对动态时间规整算法进行精确评估。在没有约束的情况下,DTW 的运行时间为 O(nxm),其中 n,m 是序列的大小。在大型数据集上进行无约束的精确评估将导致性能警告。

    multi_grid_radius 设置为除 -1 之外的值将启用近似多网格求解器,其执行时间为线性时间,而精确评估为二次时间。增加半径会以解决方案精度换取性能。

返回值

用于获取规整路径、平均距离、距离和规整后时序的辅助对象

返回类型

DTWAlignment