为时间序列预测准备数据

Posted

技术标签:

【中文标题】为时间序列预测准备数据【英文标题】:Preparing the data for the time-series forecasting 【发布时间】:2021-09-19 19:18:15 【问题描述】:

有如下数据:这是为实际问题准备的。

月份:一月到十二月共有12个月 周: 表示 1、2、3 和 4 月的第几周 日期:从星期一到星期日是一周中的哪一天。 日期:样本的日期 年份:年份 Regular Day?:代表一天的类型;定期、国定假日和宗教节日 小时:一天中的小时,从 0 到 23。 Temreat :那个时期的温度。 DE : 目标变量。

计划首先应用简单的机器学习模型,例如 MLP,然后应用更复杂的模型,例如 LSTM。但是,在使用任何模型之前,我知道我必须准备数据集。对于那部分,我对某些功能有点困惑。这是我计划为每个功能做的事情。

月份:使用 one-hot 编码,例如一月为[0 0 0 0 0 0 0 0 0 0 0 1],二月为[0 0 0 0 0 0 0 0 0 0 1 0] 等。 周:保持原样。 Day : 使用 one-hot 编码,例如星期一为[0 0 0 0 0 0 1],星期二为[0 0 0 0 0 1 0] 等。 日期:删除 年份:删除它 Regular Day?: 使用 one-hot 编码,例如常规为[0 0 1],国定假日为[0 1 0] 等。 小时:保持原样 Temreat:保持原样

我还是有一些疑问,我不确定我是否遵循正确的方法。

任何人都可以确认、修复或推荐我正在尝试做的事情。

【问题讨论】:

【参考方案1】:

我不会说只有一种有效的方法可以解决此类问题。您的方法似乎有效(至少对我而言)。

几点说明:

确保您的验证集出现在您的训练集之后,并确保您的测试集出现在您的验证集之后。此类问题与可能不受时间限制的传统问题所采用的方法不同。 对于一周中的几天,我建议使用比 one-hot 编码更模拟的方式。例如,不要将星期一表示为 [0 0 0 0 0 0 1],而是将其表示为 [0.5 0.1 0 0 0.1 0.5 1](选择所需的权重)。这可能有助于您的模型将星期一与星期日和星期二联系起来。不确定此方法是否有名称。您也可以在数小时和数月内这样做。 如果可以,请为您的准备代码编写测试; python很容易错过/弄乱一些东西,如果你提前编写测试,它将帮助你。对我来说,我犯了无数次这个错误,我不写测试,我最终错过了一些东西,模型最终在解决问题时表现得不同。确保为您对数据的任何假设编写测试/检查。 尽可能可视化/绘制特征/结果,这有助于您在特征方面进行创新、发现问题和解释模型。 不要马上开始训练。尽管这可能是最有成效和最有趣的阶段,但您可以轻松地在此过程中滑倒一两件事。清理数据、探索数据、特征工程和自动化所有这些(如果您要重复)与培训一样重要。

【讨论】:

以上是关于为时间序列预测准备数据的主要内容,如果未能解决你的问题,请参考以下文章

如何为LSTM Keras中的多步和多变量准备时间序列数据

Python - 预测小于训练数据的测试数据

如何根据预测的类别概率准备混淆矩阵?

时间序列: 铛铛铛!预测终于来了,是不是等很久了?

YOLOYOLOv8实操:环境配置/自定义数据集准备/模型训练/预测

使用 Keras 模型进行预测时出错