首页 > 解决方案 > 如何对具有多特征的时间序列数据进行切片以获得连续图包含[训练+测试+预测]?

问题描述

我有格式化的数据集,它看起来像一个矩阵 [NxM],其中 N = 40 总周期数(时间戳)和 M = 1440 像素。对于每个周期,我有 1440 个像素值对应于 1440 个像素。我使用不同的模型根据过去 10 个周期预测未来周期的像素值。 图像

问题是我在训练 NN 后无法获得正确的连续图,这很可能是由于我使用过train_test_split但从未尝试过的不良数据拆分技术TimeSeriesSplit,如下所示:

trainX, testX, trainY, testY = train_test_split(trainX,trainY, test_size=0.2 , shuffle=False) 

第一个问题是考虑到我已经使用shuffle=False并期望数据末尾的0.2将被视为测试数据,我可以正确绘制它们,但我不能,因为:1)不幸的是,我错过了 10 个周期,因为历史功能def create_dataset()检查过去的 10 个周期来预测未来的一个周期。正如你在这里看到的:

def create_dataset(dataset,data_train,look_back=1):
    dataX,dataY = [],[]
    print("Len:",len(dataset)-look_back-1)

    for i in range(len(dataset)-look_back-1):
        a = dataset[i:(i+look_back), :]
        dataX.append(a)
        dataY.append(data_train[i + look_back,  :])
    return np.array(dataX), np.array(dataY)

look_back = 10
trainX,trainY = create_dataset(data_train,Y_train, look_back=look_back)

2)我也无法访问被视为测试数据的周期数,因此当我绘制它时,它从 0 开始!而不是从火车数据的结束周期继续! 图像

我在正确的数据切片后的预期结果是 cen 导致我捕捉到我在 Windows 7 中手动绘制的连续图: 图像

任何建议将不胜感激。

标签: pythonmachine-learningscikit-learntime-seriescross-validation

解决方案


推荐阅读