时间序列曲线相似性

使用DTW比较曲线相似性

from dtaidistance import dtw as dtwd
import numpy as np
import matplotlib.pyplot as plt
from labellines import labelLines


x=np.arange(0,2*np.pi,0.1)
y=np.sin(x)
plt.plot(x, y,label='y')

for i in [0,1,2,3]:
    z=np.sin(x+(np.pi/2)*i)
    distance_s = dtwd.distance(y, z,use_c=True)
    plt.plot(x,z,label=str(i))
    print(distance_s)

#简单的设置legend(设置位置)
#位置在右上角
plt.legend(loc = 'upper right')
0.0
3.579437105036351
5.914434728535967
3.3300802329969446

在这里插入图片描述
峰谷想错的时候,距离最大

### DTW算法在时间序列相似性度量中的应用 #### 基本概念 DTW(Dynamic Time Warping,动态时间规整)是一种用于衡量两个时间序列之间相似性的方法。其核心在于通过寻找两个序列间的最优对齐路径来计算距离,允许在一个维度上的拉伸和压缩,从而解决了不同长度序列之间的匹配问题[^1]。 #### 实现过程 为了更好地理解这一机制的工作流程,下面给出具体的步骤说明: - **初始化矩阵**:创建一个大小为(m+1)*(n+1)的成本累积矩阵D,其中m,n分别为待比较两序列A,B的长度; - **边界条件设定**:规定当i=0或j=0时,即任意一方为空,则对应位置处的距离设为其前驱节点到当前点所需增加的成本; - **递推关系定义**:对于其他非零索引(i,j),则有如下表达式决定当前位置所代表成本: \[ D[i][j]=d(A_i, B_j)+\min(D[i-1][j], D[i][j-1], D[i-1][j-1]) \] 这里\( d(x,y)\)表示单步跳跃代价函数,在最简单情况下可以取绝对差值|xi-yj|作为评价标准之一。 最终得到的结果就是右下角元素D[m][n],它反映了整个变换过程中累计产生的最小总开销,也就是两条曲线间“扭曲变形”的程度量化指标。 ```python import numpy as np def dtw_distance(ts_a, ts_b): """Calculate dynamic time warping distance between two sequences.""" # Initialize the cost matrix with zeros. n, m = len(ts_a), len(ts_b) dtw_matrix = np.zeros((n + 1, m + 1)) # Set boundary conditions. for i in range(1, n + 1): dtw_matrix[i, 0] = float('inf') for j in range(1, m + 1): dtw_matrix[0, j] = float('inf') # Fill out the rest of the table using recursion formula. for i in range(1, n + 1): for j in range(1, m + 1): dist = abs(ts_a[i - 1] - ts_b[j - 1]) dtw_matrix[i, j] = dist + min(dtw_matrix[i-1, j], dtw_matrix[i, j-1], dtw_matrix[i-1, j-1]) return dtw_matrix[n,m] ``` 此代码片段实现了上述提到的基本版DTW算法逻辑框架,能够接收一对数值型列表参数并返回两者经由该技术处理后的相对接近水平得分。 #### 应用场景拓展 除了基础形式外,针对特定领域内的复杂情况还可以做出适当调整优化。例如,在水文学研究里会涉及到大量历史数据记录以及预测模型构建工作,此时就需要考虑如何有效降低原始资料规模的同时保持原有特性不变,进而提高运算效率;而在涉及多个变量共同作用下的多维向量空间内开展探索活动时,则可能引入额外预处理环节比如分段线性近似化处理等手段辅助完成任务目标[^2]^.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jaffe—fly

古人学问无遗力,少壮工夫老始成

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值