gpt4 book ai didi

python - 计算 Pandas 数据帧中的动态时间扭曲距离

转载 作者:行者123 更新时间:2023-12-04 04:26:01 31 4
gpt4 key购买 nike

我想计算数据帧中的动态时间扭曲 (DTW) 距离。结果必须是一个新的数据帧(距离矩阵),其中包括每行之间的成对 dtw 距离。

对于欧几里德距离,我使用以下代码:

from scipy.spatial.distance import pdist, squareform
euclidean_dist = squareform(pdist(sample_dataframe,'euclidean'))

我需要一个类似的 DTW 代码。

提前致谢。

最佳答案

有多种方法可以做到这一点。我将在下面留下两个选项。
如果想知道欧几里得距离和 DTW 之间的区别,this is a good resource .

选项 1
使用 fastdtw .
安装它

pip install fastdtw
然后使用它如下
import numpy as np from scipy.spatial.distance import euclidean

from fastdtw import fastdtw

x = np.array([[1,1], [2,2], [3,3], [4,4], [5,5]])
y = np.array([[2,2],
[3,3], [4,4]])
distance, path = fastdtw(x, y, dist=euclidean)
print(distance)

选项 2 ( Source )
def dtw(s, t):
n, m = len(s), len(t)
dtw_matrix = np.zeros((n+1, m+1))
for i in range(n+1):
for j in range(m+1):
dtw_matrix[i, j] = np.inf
dtw_matrix[0, 0] = 0

for i in range(1, n+1):
for j in range(1, m+1):
cost = abs(s[i-1] - t[j-1])
# take last min from a square box
last_min = np.min([dtw_matrix[i-1, j], dtw_matrix[i, j-1], dtw_matrix[i-1, j-1]])
dtw_matrix[i, j] = cost + last_min
return dtw_matrix
它的工作原理如下
enter image description here

关于python - 计算 Pandas 数据帧中的动态时间扭曲距离,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34501868/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com