动态时间规整 (DTW)

class darts.dataprocessing.dtw.dtw.DTWAlignment(series1, series2, cost)[源代码]

基类:object

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

n

series1 的长度

类型

整数

m

series2 的长度

类型

整数

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()[源代码]

在扭曲后,给出两个序列中成对元素之间的总距离。

返回

在扭曲后,两个序列中成对元素之间的总距离。

返回类型

float

m: int
mean_distance()[源代码]

给出在扭曲后两个序列中成对元素之间的平均距离。

返回

在扭曲后,两个序列中成对元素之间的平均距离。

返回类型

float

n: int
path()[源代码]

给出从 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) – 传递给 plot() 方法的一些关键字参数,用于 series1

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

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) – 是否生成一个新的图形

  • series2_y_offset (float) – 为了便于查看,将系列1垂直偏移。

  • series1_y_offset (float) – 为了便于查看,将系列2垂直偏移。

  • components (Tuple[Union[str, int], Union[str, int]]) – 系列1的组件索引和系列2的组件索引的元组。

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

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

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

series1: TimeSeries
series2: TimeSeries
warped()[源代码]

根据 DTWAlignment.path() 返回的扭曲路径对两个时间序列进行扭曲,该路径最小化了成对距离。这将使两个不同步的时间序列重新同步。

返回

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

返回类型

(TimeSeries, TimeSeries)

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

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

动态时间规整(Dynamic Time Warping)可以用来确定两个时间序列之间的相似度,无论它们的相位、长度或速度差异如何。

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

  • series2 (TimeSeries) – 一个与 series1 对齐的 TimeSeries

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

  • distance (Optional[Callable[[Union[ndarray, floating], Union[ndarray, floating]], float], None]) – 函数接受两个 floats 作为单变量序列的输入,或两个 np.ndarray,并返回它们之间的距离。默认情况下,单变量数据为绝对差值,多变量序列则为绝对差值的总和。

  • multi_grid_radius (int) – 默认半径为 -1 会导致动态时间规整算法的精确评估。在没有约束的情况下,DTW 的运行时间为 O(nxm),其中 n,m 是序列的大小。在没有约束的情况下进行精确评估,将在大型数据集上产生性能警告。将 multi_grid_radius 设置为 -1 以外的值,将启用近似多网格求解器,该求解器以线性时间执行,而精确评估则为二次时间。增加半径会以性能换取解决方案的准确性。

返回

用于获取扭曲路径、平均距离、距离和扭曲时间序列的辅助对象

返回类型

DTWAlignment