【问题标题】:Forecast next day without train and test split没有火车和测试拆分的第二天预测
【发布时间】:2020-12-17 12:10:14
【问题描述】:

通常,当我们有一个数据框时,我们会将其拆分为训练和测试。例如,假设我的数据框是这样的:

> df.head()

          Date           y  wind temperature           
1   2019-10-03 00:00:00 33   12    15
2   2019-10-03 01:00:00 10   5     6
3   2019-10-03 02:00:00 39   6     5
4   2019-10-03 03:00:00 60   13    4
5   2019-10-03 04:00:00 21   3     7

我想根据风和温度来预测 y。然后我们进行这样的拆分:

df_train = df.loc[df.index <= split_date].copy()
df_test = df.loc[df.index > split_date].copy()
X1=df_train[['wind','temperature']]
y1=df_train['y']
X2=df_test[['wind','temperature']]
y2=df_test['y']
from sklearn.model_selection import train_test_split
X_train, y_train =X1, y1
X_test, y_test = X2,y2
model.fit(X_train,y_train)

然后我们预测我们的测试数据。但是,这使用了测试数据框中的风和温度的特征。如果我想在不知道明天每小时温度和风速的情况下预测(未知)明天 y,那么该方法是否不再有效? (以 LSTM 或 XGBoost 为例)

【问题讨论】:

  • 查看时间序列预测。时间序列的训练测试是滚动进行的。对于预测,这也意味着拥有历史。

标签: python scikit-learn xgboost forecasting training-data


【解决方案1】:

按照您训练模型的方式,每一行都被视为一个独立样本,无论顺序如何,即早晚观察到什么值。如果您有理由相信时间顺序与根据风速和温度预测 y 相关,则需要更改模型。

你可以试试,例如添加另一列,其中包含一小时前的风速和温度值(将其移动一行),或者,如果您认为 y 可能取决于工作日,则从日期计算工作日并将其添加为输入功能。

【讨论】:

  • 感谢您的回答!我明白你的意思,但是由于温度(和风)每天都会发生巨大变化,我想这些滞后对于这种情况来说并不是那么好。
猜你喜欢
  • 2017-02-21
  • 2020-05-21
  • 1970-01-01
  • 2020-11-29
  • 2017-09-05
  • 2020-08-03
  • 2020-05-11
  • 2022-01-02
  • 2019-06-26
相关资源
最近更新 更多