Вычислить матрицу расстояний для последовательностей неравной длины - PullRequest
0 голосов
/ 20 февраля 2019

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

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.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...