Я хочу провести кластерный анализ для 200 криптовалют и использовать модуль "tslearn".
каждая валюта имеет 365 записей, но некоторые валюты имеют меньше
Мне нравится использовать 3 метода кластерного анализа для сравнения.
мой вопрос
Барицентр вычислений относится к методу кластерного анализа? если да, этот метод может кластеризовать данные валюты?
Есть ли какая-либо функция для проверки K-значения?
для определения подходящего K-значения, которое лучше всего подходит для кластерного анализа.
В этом модуле есть какая-либо функция для проверки кластера, которая показывает, какой метод является лучшим?
ниже рисунка, что-то не так с этим кодом, почему результат "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 кода