在 Python 中聚类时间序列数据

Gin*_*ead 5 cluster-analysis machine-learning hierarchical-clustering time-series

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

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

快速增长的集群:

在此处输入图片说明

具有稳定计数的集群:

在此处输入图片说明

具有下降趋势的集群:

在此处输入图片说明

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

在此处输入图片说明 我知道这个特定的图像根本没有用,但这对我来说也是一个死胡同。

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

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

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

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

pao*_*f89 0

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

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