Вычислить матрицу расстояний для последовательностей неравной длины

У меня есть несколько последовательностей (с неравной длины) в форме:

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 (Dynamic Time Warping):

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 ответов

Другие вопросы по тегам