我該如何做時間序列數據的K均值聚類? 我理解這是如何工作的,當輸入數據是一組點時,但我不知道如何聚類1XM的時間序列,其中M是數據長度。特別是,我不確定如何更新時間序列數據的羣集平均值。如何對時間序列數據執行K均值聚類?
我有一套標記時間序列,我想用K-means算法來檢查我是否會找回類似的標籤。我的X矩陣將是N X M,其中N是時間序列的數量,M是上面提到的數據長度。
有誰知道如何做到這一點?例如,我如何修改this k-means MATLAB code以便它適用於時間序列數據?另外,我希望能夠使用除歐幾里德距離以外的不同距離度量。
爲了更好地說明了我的懷疑,這裏是我修改的時間序列數據的代碼:
% 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
可否請您提出一些強大的聚類算法。什麼是DTW?謝謝。 – samkhan13 2013-06-09 18:50:54
抓住時間序列的任何書,它會教你DTW。或谷歌的「時間序列DTW」。這是最先進的。至於聚類,請在Wikipedia上查找DBSCAN和OPTICS。它們可以與DTW一起使用,k-means不能。 – 2013-06-09 22:19:10
謝謝這有助於:) – samkhan13 2013-06-10 05:44:02