1

我有一个形式的多个序列(长度不等):

series = [ [1, 2, 5, 6, 9, 1],
           [2, 6, 1, 4, 5],
           [3, 5, 6, 7, 1, 4, 8, 7, 9],
           [4, 3, 2, 1],
           ...
           [2, 9, 7, 6, 5]
         ] 
         shape = (38, )

序列的长度约为 1000-2000。共有38个序列。我需要对这些执行层次聚类,为此我定义了一个基于加权 DTW(动态时间规整)的自定义距离度量:

def myMetric(x, y):
    return weighted_dtw(x, y, dist=sd.euclidean)[0]

有没有办法使用myMetric作为距离度量来有效地计算上述系列的距离矩阵?遍历整个系列将是O(n^2)并且对于我的系统上的 38 个序列花费的时间太长。此外,我尝试使用sklearn.metrics.pairwise_distances

dist = pairwise_distances(series, metric=myMetric)

但这要求系列长度相等,并引发以下错误:

ValueError: setting an array element with a sequence.
4

0 回答 0