python多维分类_DTW(多维)原理与代码实现(Python)

1.概述

​ 作为一种Metric distance, 动态时间调整算法(Dynamic Time Warping, DTW)能够测量两个不同长度的时序信号的相似程度.

​ 在很多任务中,获取的数据是一种时序数据,而最常见的任务就是分析两个时间序列的相似性,例如语音的孤立词语音识别,时序动作分类,轨迹相似度分析等领域.

2.DTW原理的一些细节(个人见解)一维变多维度(也可以使用DBA)

​ 欧式距离是计算序列中对应点的差距,并不会重复利用序列中的点.而DTW会重复使用序列中的点,从而达到扭曲对齐的.

​ 假设有两个时间序列Q和C,他们的长度分别为n和m:

$$ Q = \left{q_1,q_2,q_3,...,q_n\right} $$

$$ C = \left{c_1,c_2,c_3,...,c_n\right} $$

​ 其中qi可以为多维度的特征.当qi和cj为一维时,可以使用abs(qi-cj)来描述距离;当qi和cj为多维时,可以使用欧式距离(qi^2 - cj^2)来描述距离.

​ 之后的步骤与DTW完全相同.在DTW中采用其他的距离来代替欧式距离

​ 如果特征值qi和cj的物理特征为向量,则可以使用余弦距离;如果特征值为编码,可以考虑使用最大公共子串或者汉明距离来衡量.DTW作为一种是一种很"老"的metric learning方法,DTW性能由输入的特征值决定,特征值很差,则DTW表现很差.所以使用DTW前要做好特征提取的工作.

3.DTW的应用孤立词语音识别:这个很常见,就不再描述.

时序动作分类:提取人体骨骼点(Openpose)时间序列,然后提供一个标准动作,将输入骨骼与标准动作序列进行DTW对比,得到一个差距,然后不同的动作序列具有不同的DTW距离,这样就可以根据距离对动作的种类进行分类.参考文献

轨迹相似度分析:将两个轨迹的序列送入DTW进行对比,得到距离.这种方法相对较为笼统,可以对轨迹分段,然后再提取一

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对比相似度_dtw多维)是一种用于计算两个时间序列之间相似度的算法,它在时间序列的相对时间位置和幅度上进行比较。下面介绍其原理代码实现(使用Python)。 原理: 1. 首先,将两个时间序列进行对齐。对齐的目标是找到一种方式,使得两个时间序列在时间尺度上达到最佳匹配。对齐的方法可以使用动态时间规整(Dynamic Time Warping, DTW)算法。 2. 使用动态规划的思想进行对齐。假设时间序列A的长度为n,时间序列B的长度为m,我们可以构建一个n×m的矩阵,并初始化为无穷大。 3. 从矩阵的左上角开始,遍历每一个格子。计算当前格子与其左边、上方和左上方三个格子的相似度,并选择其中最小的一个作为当前格子的值。 4. 继续遍历直到矩阵的右下角,此时右下角格子的数值即表示两个序列之间的最小距离。 5. 可以根据对齐后的矩阵,回溯得到具体的对齐路径。 代码实现Python): ```python import numpy as np def dtw_distance(series_a, series_b): len_a = len(series_a) len_b = len(series_b) dtw_matrix = np.zeros((len_a, len_b)) for i in range(len_a): for j in range(len_b): cost = abs(series_a[i] - series_b[j]) if i == 0 and j == 0: dtw_matrix[i][j] = cost elif i == 0: dtw_matrix[i][j] = cost + dtw_matrix[i][j-1] elif j == 0: dtw_matrix[i][j] = cost + dtw_matrix[i-1][j] else: dtw_matrix[i][j] = cost + min(dtw_matrix[i-1][j], dtw_matrix[i][j-1], dtw_matrix[i-1][j-1]) return dtw_matrix[len_a-1][len_b-1] ``` 以上代码实现DTW算法,其中`series_a`和`series_b`分别表示两个时间序列的数据。代码通过动态规划的方式计算两个序列之间的相似度,返回的结果即为两个序列之间最小距离。 总结:对比相似度_dtw多维)是一种计算两个时间序列相似度的算法,它通过对齐和动态规划的方式计算两个序列之间的最小距离。使用Python编写的代码实现DTW算法的计算过程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值