动态时间规整 (DTW)¶
- class darts.dataprocessing.dtw.dtw.DTWAlignment(series1, series2, cost)[源代码]¶
基类:
object
动态时间规整 (DTW) 对齐。
- n¶
series1 的长度
- 类型
整数
- m¶
series2 的长度
- 类型
整数
- series1¶
一个与 series2 对齐的 TimeSeries。
- series2¶
一个与 series1 对齐的 TimeSeries。
- cost¶
DTW 的 CostMatrix。
方法
distance
()在扭曲后,给出两个序列中成对元素之间的总距离。
给出在扭曲后两个序列中成对元素之间的平均距离。
path
()给出从 series1 到 series2 的索引路径。
plot
([new_plot, show_series, show_cost, ...])绘制扭曲路径。
plot_alignment
([new_plot, series1_y_offset, ...])绘制每个序列的单变量分量,并用线条表示DTW算法选择的对齐方式。
warped
()根据 DTWAlignment.path() 返回的扭曲路径对两个时间序列进行扭曲,该路径最小化了成对距离。
- cost: CostMatrix¶
- m: int¶
- n: int¶
- path()[源代码]¶
给出从 series1 到 series2 的索引路径。
- 返回
一个索引数组 [[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() 方法的一些关键字参数,用于 series1args_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() 方法的一些关键字参数,用于 series1args_series2 (
dict
) – 传递给 plot() 方法的一些关键字参数用于 series2
- series1: TimeSeries¶
- series2: TimeSeries¶
- darts.dataprocessing.dtw.dtw.dtw(series1, series2, window=None, distance=None, multi_grid_radius=- 1)[源代码]¶
根据动态时间规整算法,确定两个时间序列 series1 和 series2 之间的最佳对齐方式。该对齐方式在扭曲后最小化成对元素之间的距离。两个序列中的所有元素都被匹配,并且严格单调递增。仅考虑序列中的值,忽略时间轴。
动态时间规整(Dynamic Time Warping)可以用来确定两个时间序列之间的相似度,无论它们的相位、长度或速度差异如何。
- 参数
series1 (
TimeSeries
) – 一个与 series2 对齐的 TimeSeries。series2 (
TimeSeries
) – 一个与 series1 对齐的 TimeSeries。window (
Optional
[Window
,None
]) – 可选地,一个用于约束搜索最佳对齐的 窗口:参见 SakoeChiba 和 Itakura。默认考虑所有可能的对齐(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 以外的值,将启用近似多网格求解器,该求解器以线性时间执行,而精确评估则为二次时间。增加半径会以性能换取解决方案的准确性。
- 返回
用于获取扭曲路径、平均距离、距离和扭曲时间序列的辅助对象
- 返回类型