在 Python 中聚类时间序列数据

问题描述 投票:0回答:2

我正在尝试使用不同的聚类技术在 Python 中对时间序列数据进行聚类。 K-means 没有给出好的结果。以下图像是我使用凝聚聚类进行聚类后的图像。我还尝试了动态时间扭曲。这两个似乎给出了相似的结果。

理想情况下,我想要的是第二张图片中时间序列的两个不同集群。第一张图片是一个快速增加的集群。第二个没有增加,有点像稳定,第三个是下降趋势的集群。我想知道哪些时间序列既稳定又流行(这里的流行是指高计数)。我尝试了层次聚类,但结果显示层次太多,我不确定如何选择层次级别。有人可以阐明如何将第二张图片中的时间序列分成两个不同的集群,一个是低计数,另一个是高计数吗?有可能做到吗?或者我应该只是在视觉上选择一个阈值将它们一分为二?

快速增长的集群:

计数稳定的集群:

呈下降趋势的集群:

这非常非常模糊,但这是我的层次聚类的结果。

我知道这个特殊的图像根本没有用,但这对我来说也是一个死胡同。

一般来说,如果您想区分趋势,例如 YouTube 视频,如何只为“趋势”部分选择一些,而为“本周趋势”部分选择其他一些?我知道“趋势”部分的视频与第一张图片具有相似的特征。 “本周热门”部分有一组视频,这些视频的观看次数非常多,但在计数方面却很稳定(即没有显示出快速增长)。我知道,对于 YouTube,除了观看次数之外,还有许多其他因素需要考虑。对于第二张图片,我想要做的类似于“本周趋势”部分。我想选择那些计数很高的。在这种情况下如何拆分时间序列?

我知道 DTW 捕捉趋势。 DTW 给出了与上述图像相同的结果。它已识别出第二张图像中的趋势,即“稳定”。但它并没有在这里捕获“计数”元素。我希望同时捕获趋势和计数,在这种情况下稳定且计数高。

上图是根据计数聚类的时间序列。我是否错过了可以实现这一目标的任何其他聚类技术?即使只有计数,我如何根据我的需要进行不同的聚类?

任何想法将不胜感激。提前致谢!

machine-learning time-series cluster-analysis hierarchical-clustering
2个回答
0
投票

你能做的最好的事情就是从你的时间序列中提取一些特征。 在您的案例中要提取的第一个特征是趋势线性趋势估计

您可以做的另一件事是将您的时间序列的累积版本聚类,如另一篇文章中建议和解释的那样:时间序列距离指标


0
投票

您可以使用 DTW 通过计算总最小距离来对趋势进行聚类,请参阅我在这里的回答 另一个类似的问题。我有一个非常接近这个的问题,我最终为此目的部署了我自己的 python 包。详情请查看this。您还可以在 here 看到演示。

© www.soinside.com 2019 - 2024. All rights reserved.