Python中利用长短期记忆模型LSTM进行时间序列预测 |
您所在的位置:网站首页 › 鸢尾花数据综合处理 › Python中利用长短期记忆模型LSTM进行时间序列预测 |
据观察,波动性(或消费从一天到下一天的变化)非常高。在这方面,对数变换可以用于尝试稍微平滑该数据。在此之前,生成ACF和PACF图,并进行Dickey-Fuller测试。 自相关图 点击标题查阅往期内容 在Python中使用LSTM和PyTorch进行时间序列预测 转存失败重新上传取消 左右滑动查看更多 转存失败重新上传取消 01 02 03 04 偏自相关图 自相关和偏自相关图都表现出显着的波动性,这意味着时间序列中的几个区间存在相关性。 运行Dickey-Fuller测试时,会产生以下结果: 当p值高于0.05时,不能拒绝非平稳性的零假设。 STD1 954.7248 4043.4302 0.23611754 变异系数(或平均值除以标准差)为0.236,表明该系列具有显着的波动性。 现在,数据被转换为对数格式。 虽然时间序列仍然不稳定,但当以对数格式表示时,偏差的大小略有下降: 此外,变异系数已显着下降至0.0319,这意味着与平均值相关的趋势的可变性显着低于先前。 STD2 = np.std(数据集) mean2 = np.mean(数据集) cv2 = std2 / mean2 #变异系数 std2 0.26462445 mean2 8.272395 cv2 0.031988855 同样,在对数数据上生成ACF和PACF图,并再次进行Dickey-Fuller测试。 自相关图 偏自相关图 Dickey-Fuller测试 ... print('\ t%s:%。3f'%(key,value)) 1%:-3.440 5%: - 2.866 10%: - 2.569 Dickey-Fuller检验的p值降至0.0576。虽然这在技术上没有拒绝零假设所需的5%显着性阈值,但对数时间序列已显示基于CV度量的较低波动率,因此该时间序列用于LSTM的预测目的。 LSTM的时间序列分析 现在,LSTM模型用于预测目的。 数据处理 首先,导入相关库并执行数据处理 LSTM生成和预测 模型训练超过100期,并生成预测。 #生成LSTM网络 model = Sequential() model.add(LSTM(4,input_shape =(1,previous))) model.fit(X\_train,Y\_train,epochs = 100,batch_size = 1,verbose = 2) #生成预测 trainpred = model.predict(X_train) #将标准化后的数据转换为原始数据 trainpred = scaler.inverse_transform(trainpred) #计算 RMSE trainScore = math.sqrt(mean\_squared\_error(Y_train \[0\],trainpred \[:,0\])) #训练预测 trainpredPlot = np.empty_like(dataset) #测试预测 #绘制所有预测 inversetransform,= plt.plot(scaler.inverse_transform(dataset)) 准确性 该模型显示训练数据集的均方根误差为0.24,测试数据集的均方根误差为0.23。平均千瓦消耗量(以对数格式表示)为8.27,这意味着0.23的误差小于平均消耗量的3%。 以下是预测消费与实际消费量的关系图: 有趣的是,当在原始数据上生成预测(未转换为对数格式)时,会产生以下训练和测试误差: 在每天平均消耗4043千瓦的情况下,测试的均方误差占总日均消耗量的近20%,并且与对数数据产生的误差相比非常高。 让我们来看看这增加预测到10和50天。 10天 50天 我们可以看到测试误差在10天和50天期间显着降低,并且考虑到LSTM模型在预测时考虑了更多的历史数据,消耗的波动性得到了更好的预测。 鉴于数据是对数格式,现在可以通过获得数据的指数来获得预测的真实值。 例如,testpred变量用(1,-1)重新调整: testpred.reshape(1,-1) array(\[\[7.7722197,8.277015,8.458941,8.455311,8.447589,8.445035, ...... 8.425287,8.404881,8.457063,8.423954,7.98714,7.9003944, 8.240862,8.41654,8.423854,8.437414,8.397851,7.9047146\]\], dtype = float32) 结论对于这个例子,LSTM被证明在预测电力消耗波动方面非常准确。此外,以对数格式表示时间序列可以提高LSTM的预测准确度。 本文摘选《Python中利用长短期记忆模型LSTM进行时间序列预测分析 - 预测电力负荷数据》,点击“阅读原文”获取全文完整资料。 点击标题查阅往期内容 RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测 结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析 深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据 用PyTorch机器学习神经网络分类预测银行客户流失模型 PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据 Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化 Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析 R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告 R语言深度学习:用keras神经网络回归模型预测时间序列数据 Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类 R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST) MATLAB中用BP神经网络预测人体脂肪百分比数据 Python中用PyTorch机器学习神经网络分类预测银行客户流失模型 R语言实现CNN(卷积神经网络)模型进行回归数据分析 SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型 【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析 Python使用神经网络进行简单文本分类 R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析 R语言基于递归神经网络RNN的温度时间序列预测 R语言神经网络模型预测车辆数量时间序列 R语言中的BP神经网络模型分析学生成绩 matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类 R语言实现拟合神经网络预测和结果可视化 用R语言实现神经网络预测股票实例 使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测 python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译 用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类返回搜狐,查看更多 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |