计算不等长序列的距离矩阵

时间:2019-02-20 00:37:38

标签: python numpy hierarchical-clustering distance-matrix dtw

我有多个序列(长度不相等),形式为:

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.

0 个答案:

没有答案