【发布时间】:2020-03-22 03:39:36
【问题描述】:
我正在处理大约有 3000 个数据点的大致振荡的时间序列数据。我想完成两件事: 1)平滑数据以去除锯齿状边缘 2)根据分布图中的位置预测下一个具有权重的数据点
我已经包含了数据分布图和蓝色数据的示例图,黑色数据点。黄线表示具有 4/len(df) 的 frac 的 Lowess 平滑数据点,因此局部回归的窗口与其他数据保持一致。问题是预测下一个数据点是可怕的。由于滞后,简单/指数移动平均线不是一种选择。我已经在信号下使用了几个 scipy 模块并进行了优化,例如curve_fit,但除了预测下一个数据点之外,还没有发现任何接近匹配 statsmodel lowess 准确性的东西。如果可能的话,我会尽量远离机器学习。
我的搜索一直指向使用带有贝叶斯优化的高斯过程,但这有点超出我作为我自己的自定义函数实现的能力。
如果我在构建自己的自定义函数时遇到困难,我们将不胜感激任何链接或反馈如何继续。
c_list = [2.8, 2.1, 4.0, 4.7, 4.7, 3.0, 0.2, -0.4, -3.2, 1.0, 4.0, -3.7, -3.7, -4.3, -2.7, 0.2, 3.4, 4.3, 4.2, 3.8, -0.3, 2.4, -0.2, -0.2, -2.6, -3.3, -4.3, -3.6, 0.5, 0.3, 0.9, 3.3, 3.3, 3.6, 3.9, 4.1, -0.3, -0.9, -2.9, -0.9, 1.9, 2.8, 4.4, 3.9, 3.3, -2.6, -3.1, -3.2, -0.2, 3.2]
c_series = pd.Series(c_list)
x = c_series.index.values
y = c_series.values
window = 4/len(c_series)
l = lowess(y, x, window)
c_series.plot()
plt.scatter(x, y, s=9)
plt.plot(l[:,1])
【问题讨论】:
标签: python forecasting smoothing