使用Python将时间序列数据拆分为训练集和有效集

时间:2019-11-21 12:06:30

标签: python pandas machine-learning scikit-learn train-test-split

我正在一个项目中,如果时间序列(例如D1,D2),我已经合并了2个数据集。 D1的间隔为5-minutesD2的间隔为1-minute,因此我将D1转换为1分钟的间隔,并与{{ 1}}。现在,我要根据以下条件将此新数据集D2分为训练,测试和有效集:

  

注意:我进行了很多搜索,试图找到解决问题的方法,但找不到适合我问题的答案,请不要将其标记为重复! >

  1. 有效集应为数据集末尾的60个值。
  2. 然后,测试集应该是直到 D1D2
  3. 然后,我将为火车设置剩余的数据。

这是我现在进行拆分的方式:

valid set

但是现在我需要在上述条件的基础上转换成火车,进行测试并拆分吗?

我该怎么做?也是分割时间序列数据集的正确方法吗?

1 个答案:

答案 0 :(得分:2)

尝试一下:

valid_set = dataset.iloc[-60:, :]
test_set = dataset.iloc[-120:-60]
train_set = dataset.iloc[:-120]

概括:

def split_train_test(dataset, validation_size):
    valid = dataset.iloc[-validation_size:, :]
    train_test = dataset.iloc[:-validation_size)]

    train_length = int(0.63 * len(train_test))

    # split into input and outputs
    train_X, train_y = train_test.iloc[:train_length, :-1], train_test.iloc[:train_length, -1]
    test_X, test_y = train_test.iloc[train_length:, :-1], train_test.iloc[train_length:, -1]
    valid_X, valid_y = valid.iloc[:, :-1], valid.iloc[:, -1]

    return train_test, valid, train_X, train_y, test_X, test_y, valid_X, valid_y

您可以将%split rati作为参数传递给函数,而不是像我一样将其硬编码为函数。