动态时间规整 (DTW)¶
- class darts.dataprocessing.dtw.dtw.DTWAlignment(series1, series2, cost)[source]¶
基类:
object
动态时间规整 (DTW) 对齐。
- n¶
series1 的长度
- 类型
int
- m¶
series2 的长度
- 类型
int
- 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()[source]¶
返回从 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
) – 传递给 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
) – 是否生成新的 Figureseries2_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¶
- darts.dataprocessing.dtw.dtw.dtw(series1, series2, window=None, distance=None, multi_grid_radius=- 1)[source]¶
根据动态时间规整算法,确定两个时序 series1 和 series2 之间的最优对齐方式。该对齐方式使规整后成对元素之间的距离最小化。两个序列中的所有元素都进行匹配,并且顺序严格单调递增。只考虑序列中的值,忽略时间轴。
动态时间规整可用于确定两个时序的对应紧密程度,而无需考虑相位、长度或速度差异。
- 参数
series1 (
TimeSeries
) – 要与 series2 对齐的 TimeSeries。series2 (
TimeSeries
) – 要与 series1 对齐的 TimeSeries。window (
Optional
[Window
,None
]) – 可选参数,用于约束最优对齐搜索的 Window:参见 SakoeChiba 和 Itakura。默认为考虑所有可能的对齐 (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 之外的值将启用近似多网格求解器,其执行时间为线性时间,而精确评估为二次时间。增加半径会以解决方案精度换取性能。
- 返回值
用于获取规整路径、平均距离、距离和规整后时序的辅助对象
- 返回类型