为时间序列预测准备数据
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很容易错过/弄乱一些东西,如果你提前编写测试,它将帮助你。对我来说,我犯了无数次这个错误,我不写测试,我最终错过了一些东西,模型最终在解决问题时表现得不同。确保为您对数据的任何假设编写测试/检查。
尽可能可视化/绘制特征/结果,这有助于您在特征方面进行创新、发现问题和解释模型。
不要马上开始训练。尽管这可能是最有成效和最有趣的阶段,但您可以轻松地在此过程中滑倒一两件事。清理数据、探索数据、特征工程和自动化所有这些(如果您要重复)与培训一样重要。
【讨论】:
以上是关于为时间序列预测准备数据的主要内容,如果未能解决你的问题,请参考以下文章