如何解决用于LSTM的时间序列数据的训练测试拆分
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[:,test[:,-1]
执行上述代码会将时间序列数据集分为训练-75%和测试25%。我要将火车测试的拆分控制为80-20或90-10。 有人可以帮助我了解如何将数据集分成所需的任意比例吗?
该概念是从https://machinelearningmastery.com/multivariate-time-series-forecasting-lstms-keras/借来的。
注意:我无法随机分割数据集以进行训练和测试,而最新值必须用于测试。我包括了我的数据集的屏幕截图。
解决方法
基本上,您会想要做类似train_test_split(values,test_size=.2,shuffle=False)
test_size=.2
告诉函数使测试大小成为输入数据的20%(您可以使用train_size=n
类似地指定火车的大小,但是在没有此规范的情况下,函数将使用{{1 }},即测试集的补充。
1-test_size
告诉函数不要随机调整顺序。
首先,您应该使用切片或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)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。