21 Stimmen

Wie kann ich K-means Clustering auf Zeitreihendaten anwenden?

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X