需要机器学习算法来填充时间序列数据

数据挖掘 机器学习 Python scikit-学习 数据集 统计数据
2022-02-15 10:49:43

我目前正在处理一个时间序列数据集,每 30 分钟(30 分钟的数据,30 分钟的无数据)具有周期性间隙。有没有一种相对简单的方法可以使用 scikit-learn(或其他 Python 库)来预测缺失数据,使用可用数据对其进行训练?我认为这将涉及“监督培训”方法?我提供了一个图表供视觉参考,橙色线是缺口数据集的 20 分钟集中移动平均线,我想将数据填充为看起来更像来自单独完整的绿色 60 分钟集中移动平均线数据集。谢谢!

在此处输入图像描述

2个回答

n_degree您可以使用ridge回归来近似具有多项式的时间序列。您可以尝试不同的度数(例如[2,3,4,5,6])并选择最好的一个。请记住,更高阶的模型总是得到更低的错误值。所以你应该以某种方式惩罚更高的学位。

from sklearn.linear_model import Ridge
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

for count, degree in enumerate([2, 3, 4, 5, 6]):
    model = make_pipeline(PolynomialFeatures(degree), Ridge())
    model.fit(Time, y)

更多细节在这里

您正在尝试做的事情称为时间序列中的插补(即填补空白)。

此处提供了使用 python 估算时间序列的指南:

https://medium.com/@drnesr/filling-gaps-of-a-time-series-using-python-d4bfddd8c460

该指南使用一些算法来估算数据,但可以在此处找到更广泛的算法列表:

https://otexts.com/fpp2/regression.html