Кластеризация данных временного ряда различной длины - PullRequest
3 голосов
/ 06 июня 2019

У меня есть данные временных рядов различной длины. Я хочу кластеризоваться на основе расстояния DTW, но не могу найти библиотеку муравьев относительно этого. sklearn дает прямую ошибку, в то время как tslearn kmeans дал неправильный ответ.

Моя проблема решается, если я дополняю его нулями, но я не уверен, правильно ли это для заполнения данных временных рядов при кластеризации.

Приветствуются предложения о других методах кластеризации данных временных рядов.

max_length = 0

for i in train_1:
    if(len(i)>max_length):
        max_length = len(i)
print(max_length)

train_1 = sequence.pad_sequences(train_1, maxlen=max_length)
km3 = TimeSeriesKMeans(n_clusters = 4, metric="dtw",verbose = False,random_state = 0).fit(train_1)

print(km3.labels_)

1 Ответ

2 голосов
/ 20 июня 2019

Вы можете попробовать пользовательские k-средства (алгоритм кластеризации) или другие.Исходный код легко доступен в библиотеке sklearn.Заполнение действительно не является хорошим вариантом, поскольку оно изменит саму проблему вопроса.Вы также можете использовать tslearn и pyclustering (для оптимальных кластеров) в качестве альтернативы, но не забудьте использовать расстояние DTW, а не евклидово расстояние.

...