Clustering Time Series with DTW multiple column(time series) different lengths
45 次查看(过去 30 天)
显示 更早的评论
Please kindly hellp me !!!
I have data in a timetable format (TT)
I wanted to use DTW (Dynamic Time Warping) to cluster data into 3 categories without removing NaN raws;
can someone help me, please
please consider the starting points of the numerical data in a column as the start of the time series
n number of time series
all the time series are synchronized into common time in the timetable data(TT).
data collection was not started and ended at the same time so depending on the starting and ending time NaN values are at the beginning and end of the columns
0 个评论
回答(1 个)
Divyank
2023-3-16
Convert your timetable data (TT) to a matrix format using the table2array function.
>> data = table2array(TT);
You can use the 'pdist' function to calculate the pairwise distance between time series using the DTW distance metric. The pdist function can handle missing (NaN) values. The output of the pdist function is a condensed distance matrix.
>> dist = pdist(data(:, 2:end), @(x, y) dtw(x, y));
Then, 'linkage' function can be used to perform hierarchical clustering on the distance matrix.
>> Z = linkage(dist, 'ward');
To assign each time series to a cluster based on the hierarchical clustering result you can use the 'cluster' function. You can specify the number of clusters using the maxclust option.
>> idx = cluster(Z, 'maxclust', 3);
Finally, you can plot the clustering result using the 'gscatter' function.
>> gscatter(data(:,1), data(:,end), idx);
I hope this helps!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Statistics and Machine Learning Toolbox 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!