没有训练和测试拆分的第二天预测
Forecast next day without train and test split
通常,当我们有一个数据框时,我们会将其拆分为训练和测试。例如,假设我的数据框是这样的:
> 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)
然后我们预测我们的测试数据。但是,这使用了测试数据框中的风和温度特征。如果我想在不知道明天的每小时温度和风的情况下预测(未知)明天,该方法是否不再有效? (以 LSTM 或 XGBoost 为例)
根据您训练模型的方式,每一行都被视为一个独立样本,无论顺序如何,即较早或较晚观察到的值。如果您有理由相信时间顺序与根据风速和温度预测 y
相关,您将需要更改模型。
你可以试试,例如添加另一列,其中包含一小时前的风速和温度值(将其移动一行),或者,如果您认为 y
可能取决于工作日,请从日期计算工作日并添加作为输入特征。
通常,当我们有一个数据框时,我们会将其拆分为训练和测试。例如,假设我的数据框是这样的:
> 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)
然后我们预测我们的测试数据。但是,这使用了测试数据框中的风和温度特征。如果我想在不知道明天的每小时温度和风的情况下预测(未知)明天,该方法是否不再有效? (以 LSTM 或 XGBoost 为例)
根据您训练模型的方式,每一行都被视为一个独立样本,无论顺序如何,即较早或较晚观察到的值。如果您有理由相信时间顺序与根据风速和温度预测 y
相关,您将需要更改模型。
你可以试试,例如添加另一列,其中包含一小时前的风速和温度值(将其移动一行),或者,如果您认为 y
可能取决于工作日,请从日期计算工作日并添加作为输入特征。