1

我正在使用 Python 包dtaidistance进行快速 DTW 计算。如文档中所述,可以使用以下代码:

from dtaidistance import dtw
import numpy as np
series = np.matrix([
    [0.0, 0, 1, 2, 1, 0, 1, 0, 0],
    [0.0, 1, 2, 0, 0, 0, 0, 0, 0],
    [0.0, 0, 1, 2, 1, 0, 0, 0, 0]])
ds = dtw.distance_matrix_fast(series)

计算系列集之间的 DTW 距离度量。我正在使用的时间序列的长度为 3000。总的来说,我的每个数据集大约有 3500 个这些序列。

不幸的是,我无法在相当长的时间内从这个函数中得到任何结果。在我的机器(128 GB RAM、32 个 CPU 内核、4 个 Nvidia GPU)上,我不得不在一天后中止计算。令人惊讶的是,我什至没有看到这个函数的任何输出,即使我将参数“show_progress”(参见源代码)设置为 true。

我在这里做错了什么?非常感谢您的帮助。

4

1 回答 1

1

事实证明,我根本没有从源代码构建包,因此无法访问更快的基于 C 的实现。

这里提到的步骤为我解决了这个问题:

该库也可以直接从源代码编译和/或安装。

Download the source from https://github.com/wannesm/dtaidistance
Compile the C extensions: python3 setup.py build_ext --inplace
Install into your site-package directory: python3 setup.py install
于 2018-10-25T12:32:55.557 回答