Как я могу выполнить кластеризацию временных рядов K-типа? Я понимаю, как это работает, когда входные данные представляют собой набор точек, но я не знаю, как сгруппировать временные ряды с 1XM, где M - длина данных. В частности, я не уверен, как обновить среднее значение кластера для данных временных рядов.Как выполнить кластеризацию K-временных рядов по данным временных рядов?
У меня есть набор помеченных временных рядов, и я хочу использовать алгоритм K-средних, чтобы проверить, верну ли я подобную метку или нет. Моя матрица 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
Возьмите любую книгу по временным рядам, и она научит вас DTW. Или google для «временных рядов DTW». Это современное состояние. Что касается кластеризации, найдите DBSCAN и OPTICS в Википедии. Они могут использоваться с DTW, k-средства не могут. –
спасибо, это помогает :) – samkhan13