基于Python的时间序列分割

2024-09-27 22:20:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个TimeSeries数据集,它有如下所示的图。我正试图找到最好的方法来分割时间序列。我需要将时间序列分为三个区域-‘上升’、‘稳定’和‘冷却’,分别用于初始斜坡上升部分、近似恒定部分和最终冷却部分

在我将得到的未来系列中,哪种方法是进行细分的最佳方法?如中所示,如果给我的模型这样一个时间序列作为输入,它应该能够输出区域边界的索引?此外,这是否可以在无人监督的情况下进行

谢谢你抽出时间。如有任何建议,我们将不胜感激

enter image description here


Tags: 数据方法模型区域时间情况序列建议
2条回答

正如@mdgorgan所提供的,除了其他方法(基于ML的方法/技巧)之外,您还可以使用这种基于信号处理的方法来完成分割任务。我试着基于这个{a1}:

#install library
#!python -m pip install ruptures

#import libraries
import matplotlib.pyplot as plt 
import ruptures as rpt  

#genearte sample data in form of a signal
n_samples, n_dims, sigma = 1000, 1, 1
n_bkps = 2  # number of breakpoints
signal, bkps = rpt.pw_constant(n_samples, n_dims, n_bkps, noise_std=sigma)
print(bkps) #[340, 671, 1000]

# detection
algo = rpt.Dynp(model="l2").fit(signal)
result = algo.predict(n_bkps=2)

print(result)
#[340, 670, 1000]

# display segmentation
rpt.display(signal, bkps, result)
plt.show()

它根据变化点检测完成分割工作。 img

这听起来像是一个可以通过变更点检测解决的问题

ruptures库将是脱机方法的良好起点:https://pypi.org/project/ruptures/

您将找到已知和未知数量的变更点的方法

相关问题 更多 >

    热门问题