我该如何做时间序列数据的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