Есть проблемы с кластеризацией данных временных рядов? - PullRequest
0 голосов
/ 04 ноября 2018

Я хочу провести кластерный анализ для 200 криптовалют и использовать модуль "tslearn". каждая валюта имеет 365 записей, но некоторые валюты имеют меньше Мне нравится использовать 3 метода кластерного анализа для сравнения.

мой вопрос

  1. Барицентр вычислений относится к методу кластерного анализа? если да, этот метод может кластеризовать данные валюты?

  2. Есть ли какая-либо функция для проверки K-значения? для определения подходящего K-значения, которое лучше всего подходит для кластерного анализа.

  3. В этом модуле есть какая-либо функция для проверки кластера, которая показывает, какой метод является лучшим?

  4. ниже рисунка, что-то не так с этим кодом, почему результат "nan"? моя форма данных (200, 365, 1) из >>> print (formatted_dataset.shape)

для приведенного ниже кода мне нравится использовать расстояние DTW для измерения, как я могу выбрать DTW?

import pandas as pd
import numpy as np
%matplotlib inline
import seaborn as sns
from matplotlib import pyplot as plt
from datetime import datetime
from dateutil.parser import parse
import string
from datetime import date

#K shape
    seed = 0
    numpy.random.seed(seed)
    formatted_dataset = TimeSeriesScalerMeanVariance().fit_transform(formatted_dataset[:200])
    sz = formatted_dataset.shape[2]

    #Euclidean k-means
    ks = KShape(n_clusters=3, verbose=True, random_state=seed)
    y_pred = ks.fit_predict(formatted_dataset)

    plt.figure()
    for yi in range(3):
    plt.subplot(3, 1, 1 + yi)
    for xx in formatted_dataset[y_pred == yi]:
    plt.plot(xx.ravel(), "k-", alpha=.2)
    plt.plot(ks.cluster_centers_[yi].ravel(), "r-")
    plt.xlim(0, sz)
    plt.ylim(-4, 4)
    plt.title("Cluster %d" % (yi + 1))

    plt.tight_layout()
    plt.show()

Rusult кода

Rusult кода

...