【问题标题】:Train-Test split for Time Series Data to be used for LSTM用于 LSTM 的时间序列数据的训练测试拆分
【发布时间】:2021-01-14 09:05:52
【问题描述】:
values = df.values
train, test = train_test_split(values)

#Split into train and test
X_train, y_train = train[:, :-1], train[:, -1]
X_test, y_test = test[:, :-1], test[:, -1]

执行上述代码将时间序列数据集拆分为训练 75% 和测试 25%。我想将训练测试拆分控制为 80-20 或 90-10。 有人可以帮我了解如何将数据集拆分为我想要的任何比例吗?

这个概念是从https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/借来的。

注意:我无法随机拆分数据集以进行训练和测试,并且必须使用最新的值进行测试。我已经包含了我的数据集的屏幕截图。

如果有人能解释代码,请帮我理解上面的内容。谢谢。

【问题讨论】:

    标签: python keras time-series regression lstm


    【解决方案1】:

    Here's the documentation.

    基本上,你会想做类似train_test_split(values,test_size=.2,shuffle=False)

    test_size=.2 告诉函数将测试大小设为输入数据的 20%(您可以类似地使用 train_size=n 指定训练集大小,但在没有此规范的情况下,函数将使用 1-test_size,即补码测试集)。

    shuffle=False 告诉函数不要随机打乱顺序。

    【讨论】:

    • 知道了。我不知道洗牌的价值。谢谢。
    【解决方案2】:

    首先,您应该使用切片或 sklearn 的 train_test_split 将数据分成训练和测试(请记住将 shuffle=False 用于时间序列数据)。

    #divide data into train and test
    train_ind = int(len(df)*0.8)
    train = df[:train_ind]
    test = df[train_ind:]
    

    然后,您想使用 Keras 的 TimeseriesGenerator 生成序列供 LSTM 用作输入。这个blog 很好地解释了它的用法。

    from keras.preprocessing.sequence import TimeseriesGenerator
    
    n_input = 2 #length of output
    generator = TimeseriesGenerator(train, targets=train, length=n_input)
    

    【讨论】:

    • 谢谢。这就说得通了。我不知道 shuffle 参数。
    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 2019-05-18
    • 1970-01-01
    • 2019-05-10
    • 2020-02-06
    • 1970-01-01
    • 2021-11-23
    • 2020-01-30
    相关资源
    最近更新 更多