基于lstm的时间序列预测,基于cnn的时间序列预测模型
1 keras 1.1入门资源:
33559 www.bilibili.com/video/b v1 CT 411 H7 RM?from=search seid=13437359564386162135
Keras是深度学习框架,比tensorflow好用。
Tensorflow、pytorch、keras和keras是目前深度学习框架中最常用的,速度大约是tensorflow的两倍。
3558 www.Sina.com/:安装python环境后,安装张量流(有CPU和GPU版本,为简单起见,可以安装CPU版本),然后在命令行
1.2简单线性回归模型按importkerasimpyasnimportmatplotlib . pyplosplt # sequential from keras . modelsimportsequential # Dense full connection layers from keras . layers导入Dense#,使用numpy随机函数生成x _ data=NP . rand . rand(100)noise=NP . random . normal)0x _ data . shape(y _ data)
# sequence model=sequential(# add all connection layer(Dense)model . add)参数到模型(Dense) units=1,Input_dim=1)))输入输出的意义y) #编译模型#sgd:随机梯度下降法#mse:均方误差model.pile (optimizer= SGD ,loss=mse ))为了输出训练模型,一批cost=model。需要循环迭代的forstepinrange的train _ on _ batch (x _ data,y_data)列出成本值if step P0==0:print)batch 360 b=model。图层[0]。Get _ weights(打印(w:
1.3非线性回归增量隐藏层是设置激活函数,如果激活函数没有设置,默认是线性激活函数。
2 3358www.Sina.com/如何被LSTM改成LSTM的3358www。Sina.com/?
(仅考虑一维数据)
LSTM时间序列预测可以实现单步预测和多步预测安装:单步预测一步时间序列数据:三步预测三步。
将时间序列数据转换为LSTM的训练数据函数如下。
输入时间序列数据,输入大小步长预测输出大小步长
Ef _ split(数据,输入大小,输出大小):X,Y=[],[]Y . append(arr[I input _ size 3360 I input _ t]
x,y=data_split(dat,3,3)n具有2* 25数据的数组
x,y为40* 3的ndarray数组输入输出数据LSTM的输入格式为(n,t,m)
n:训练数据的长度
t:以上模型为三输入三输出模型,t为3。
M:1(一维,所以数据特征的维数为()))))))))))))。
因此,需要对输入数据进行处理
在x=NP . shape(x,)x.shape[0],3,1)) x,y之后,模型构造如下。
n _ in=x.shape [1] n _ features=。shape[2]n _ out=y . shape[1]model=create _ model(n _ in,n_feer)
defcreate_model(n_in,n_features,n _ out):model=Sequential)(model . add)lstm)128,activation=
error _ matrix=[]for steprange(1001):#)训练1000次cost=model.train_on_batch(x,y) error _ step,)cost:),Cost)y _ train _ pred=model . predict(x)train _ error=NP . mean(ABS(y _ train _ pred)% )PLT . plot(error _ matrix)PLT . xlabel)、训练次数)、plt.ylabel)和
LSTM模型的预测结果如图所示。
(本图只使用了前22个数据训练模型,模型为3-3。)
附录3子功能的构建
DEF _ MODEL _ RNN (N _ OUT):模型1=顺序)模型1。添加(SIMPLENN) 128)(模型1)。添加活动DD) activation)) relu))激活层模型1。编译)优化器=)更新
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。