【问题标题】:time series dataset train test split ML时间序列数据集训练测试拆分 ML
【发布时间】:2020-11-17 13:02:15
【问题描述】:

machinelearningmastery there is a post 上,关于如何从一个时间序列变量创建监督学习回归类型数据集。

例如:

time, measure
1, 100
2, 110
3, 108
4, 115
5, 120

通过函数series_to_supervised传递数据后可以变成下面这个

X, y
?, 100
100, 110
110, 108
108, 115
115, 120
120, ?

在 machinelearningmastery 帖子的多步骤或序列预测部分,series_to_supervised 可以输出以下内容:

   var1(t-2)  var1(t-1)  var1(t)  var1(t+1)
2        0.0        1.0        2        3.0
3        1.0        2.0        3        4.0
4        2.0        3.0        4        5.0
5        3.0        4.0        5        6.0
6        4.0        5.0        6        7.0
7        5.0        6.0        7        8.0
8        6.0        7.0        8        9.0

我的问题是如何定义 X & y 训练测试拆分?我假设var1(t) 将被定义为y,对吗?例如,下面的 trainX 和 trainy 是否正确?我正在尝试

#function for time series X,y breakdown
train = series_to_supervised(need_to_train,11,14)

#split data sets
trainX = np.array(train.drop(['var1(t)'],1))
trainy = np.array(train['var1(t)'])

model = XGBRegressor(objective='reg:squarederror', n_estimators=100)

【问题讨论】:

    标签: python machine-learning scikit-learn time-series xgboost


    【解决方案1】:

    不,var1(t+1) 将是目标并被视为y。重点是根据当前(和过去)数据预测未来的下一步。

    【讨论】:

    • 您对如何分割数据以进行训练测试拆分有什么建议吗?所以我认为数据框中的最后一列永远是目标变量,对吧?
    • @HenryHub 这很常见但并不普遍。您应该考虑一下您的目标变量是什么——您要预测的是什么?您的代码看起来不错,只是定位错误的列而已。
    • 最后一个新手问题很抱歉,如果我正在尝试许多过去的观察结果和未来的几个观察结果,即var1(t-2) var1(t-1) var1(t) var1(t+1) var1(t+2) var1(t+3) var1(t+4),我的目标变量是否总是var1(t+1)
    • 我正在尝试对每小时数据进行多输出回归。试图预测未来几天的数据。 24 小时/预测
    • @HenryHub 如果您有多个预测,则需要使用多个输出(因此需要多个目标变量)或多个预测变量(每个目标变量一个)。
    猜你喜欢
    • 2019-05-10
    • 1970-01-01
    • 2020-02-06
    • 2021-01-14
    • 2020-03-17
    • 2022-06-25
    • 2020-09-12
    • 2017-11-01
    • 1970-01-01
    相关资源
    最近更新 更多