我有多个序列(长度不相等),形式为:
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.