RNN预测模型做多输入单输出预测模型,直接替换数据就可以用。
程序语言是matlab,需求最低版本为2021及以上。
程序可以出真实值和预测值对比图,线性拟合图,可打印多种评价指标。
PS:以下效果图为测试数据的效果图,主要目的是为了显示程序运行可以出的结果图,具体预测效果以个人的具体数据为准。
2.由于每个人的数据都是独一无二的,因此无法做到可以任何人的数据直接替换就可以得到自己满意的效果。
这段程序主要是一个基于循环神经网络(RNN)的预测模型。它的应用领域可以是时间序列预测、回归分析等。下面我将对程序的运行过程进行详细解释和分析。
原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/699003121523.html
首先,程序开始时清空环境变量、关闭图窗、清空变量和命令行。然后,通过xlsread函数导入数据,其中'数据的输入'和'数据的输出'是两个Excel文件的文件名。
接下来,程序对数据进行归一化处理。首先使用mapminmax函数将输入数据P_train和P_test归一化到0到1的范围内,并保存归一化的参数ps_input。然后,使用mapminmax函数将输出数据T_train和T_test归一化到0到1的范围内,并保存归一化的参数ps_output。
接着,程序将归一化后的数据转换为特定的格式。使用for循环将p_train和p_test转换为vp_train和vp_test,其中vp_train和vp_test是每个样本的列向量。这样做是为了适应RNN模型的输入格式。
然后,程序定义了一些基础参数。numFeatures表示特征维度,即特征变量的列数;numResponses表示输出维度,这里是1。
接下来,程序设计了一个RNN结构。该结构包含了输入层、GRU层、ReLU激活层、LSTM层、丢弃层、全连接层和回归层。其中,GRU层和LSTM层是循环神经网络的一种变体,用于处理序列数据。
然后,程序根据当前计算环境(GPU或CPU)设置网络参数。如果有GPU设备,则使用GPU进行训练,否则使用CPU。
接着,程序定义了训练选项。使用adam优化算法进行训练,最大训练次数为2000次,梯度阈值为1,初始学习率为0.01,学习率调整策略为piecewise,训练850次后开始调整学习率,学习率调整因子为0.25,最小批量大小为96,关闭训练过程中的详细输出,每个epoch后对数据进行洗牌,训练环境根据之前判断的设备类型进行设置,最后画出训练过程的曲线。
接下来,程序使用trainNetwork函数对vp_train和t_train进行训练,使用之前定义的网络结构和训练选项。
然后,程序使用训练好的网络对vp_train和vp_test进行预测,得到t_sim1和t_sim2。
接着,程序使用mapminmax函数将预测结果进行反归一化,得到T_sim1和T_sim2。
然后,程序计算均方根误差(RMSE),分别计算训练集和测试集的误差。误差的计算公式为每个样本的预测值与真实值之差的平方和除以样本数,再开平方。
接下来,程序计算R2值,用于评估预测模型的拟合程度。R2值的计算公式为1减去预测值与真实值之间的平方和与真实值与均值之间的平方和的比值。
然后,程序计算平均绝对误差(MAE),用于评估预测模型的预测精度。MAE的计算公式为预测值与真实值之差的绝对值之和除以样本数。
接着,程序绘制训练集和测试集的预测结果对比图。图中包含真实值和预测值,以及RMSE、R2和MAE的值。
然后,程序绘制训练集和测试集的真实值与预测值的线性拟合图。图中包含真实值和预测值,以及拟合直线。
接下来,程序绘制所有样本的真实值与预测值的线性拟合图。图中包含真实值和预测值,以及拟合直线。
然后,程序打印出评价指标,包括RMSE、R2和MAE。
最后,程序绘制测试集的预测误差图,用于分析预测模型的误差情况。
总结来说,这段程序是一个基于循环神经网络的预测模型,用于时间序列预测或回归分析。它通过对输入数据进行归一化处理,设计了一个包含GRU和LSTM层的RNN结构,使用adam优化算法进行训练,并计算了预测结果的误差和评价指标。程序的主要思路是通过训练RNN模型来学习输入数据的模式,并预测输出数据。涉及到的知识点包括循环神经网络、归一化处理、优化算法等。希望这个解释对你有帮助 如果还有其他问题,请随时提问。
原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/699003121523.html
标签:RNN,训练,模型,程序,train,归一化,预测值,预测 From: https://blog.51cto.com/u_14989677/6531714