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