Jak mogę dokonać grupowania K-średnich danych szeregów czasowych? Rozumiem, jak to działa, gdy dane wejściowe są zbiorem punktów, ale nie wiem jak grupować szeregi czasowe z 1XM, gdzie M jest długością danych. W szczególności nie jestem pewien, jak zaktualizować średnią klastra dla danych szeregów czasowych.Jak mogę przeprowadzić grupowanie K-średnich na danych szeregów czasowych?
Mam zestaw oznaczonych szeregów czasowych i chcę użyć algorytmu K-średnich, aby sprawdzić, czy otrzymam podobną etykietę, czy nie. Moja macierz X będzie N X M, gdzie N jest liczbą szeregów czasowych, a M jest długością danych, jak wspomniano powyżej.
Czy ktoś wie, jak to zrobić? Na przykład, w jaki sposób mogę zmodyfikować this k-means MATLAB code, aby działał w przypadku danych szeregów czasowych? Chciałbym również móc używać różnych metryk odległości poza odległością euklidesową.
Aby lepiej zilustrować moje wątpliwości, tutaj jest kod I zmodyfikowaną danych szeregów czasowych:
% Check if second input is centroids
if ~isscalar(k)
c=k;
k=size(c,1);
else
c=X(ceil(rand(k,1)*n),:); % assign centroid randomly at start
end
% allocating variables
g0=ones(n,1);
gIdx=zeros(n,1);
D=zeros(n,k);
% Main loop converge if previous partition is the same as current
while any(g0~=gIdx)
% disp(sum(g0~=gIdx))
g0=gIdx;
% Loop for each centroid
for t=1:k
% d=zeros(n,1);
% Loop for each dimension
for s=1:n
D(s,t) = sqrt(sum((X(s,:)-c(t,:)).^2));
end
end
% Partition data to closest centroids
[z,gIdx]=min(D,[],2);
% Update centroids using means of partitions
for t=1:k
% Is this how we calculate new mean of the time series?
c(t,:)=mean(X(gIdx==t,:));
end
end
czy możesz zaproponować niektóre z niezawodnych algorytmów grupowania. a czym jest DTW? dzięki. – samkhan13
Zdobądź każdą książkę na szeregi czasowe, a nauczy Cię ona DTW. Lub google dla "szeregów czasowych DTW". To najnowszy stan. Jeśli chodzi o tworzenie klastrów, wyszukaj DBSCAN i OPTICS w Wikipedii. Mogą być używane z DTW, k-środki nie mogą. –
dzięki temu pomaga :) – samkhan13