Wie kann ich K-means Clustering von Zeitreihendaten durchführen? Ich weiß, wie das funktioniert, wenn die Eingabedaten eine Reihe von Punkten sind, aber ich weiß nicht, wie man eine Zeitreihe mit 1XM clustert, wobei M die Datenlänge ist. Insbesondere bin ich mir nicht sicher, wie man den Mittelwert des Clusters für Zeitreihendaten aktualisiert.
Ich habe eine Reihe von beschrifteten Zeitreihen und möchte den K-Means-Algorithmus verwenden, um zu prüfen, ob ich eine ähnliche Beschriftung zurückbekomme oder nicht. Meine X-Matrix wird N X M sein, wobei N die Anzahl der Zeitreihen und M die Datenlänge ist, wie oben erwähnt.
Weiß jemand, wie man das macht? Wie könnte ich zum Beispiel Folgendes ändern dieser k-means MATLAB-Code so dass es für Zeitreihendaten funktioniert? Außerdem möchte ich neben dem euklidischen Abstand auch andere Abstandsmetriken verwenden können.
Zur besseren Veranschaulichung meiner Zweifel, hier ist der Code, den ich für Zeitreihendaten geändert habe:
% 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