【Matlab免费获取】回归预测-预测新数据输出值不会?一招搞定所有模型!

【本期看点】-模型简介

建模思想Matlab/Python通用

        当我们处理已知输出数据时,通过机器学习建模,通常会将数据划分为训练集和测试集(有时还会加入验证集)。然后我们用模型拟合数据,借助R²、MBE、RMSE、MAE、MAPE等评价指标来衡量模型的表现(分类的话就是准确率等指标)。这一过程相信很多朋友都已经非常熟悉了,没错吧?

        那么,问题来了:如果后续只有新的输入特征数据,我们还能预测出对应的未知的输出值吗?

        答案当然是可以的!其原理其实很简单:只需利用已经用已知输入和输出数据训练好的模型,将新数据输入到这个模型中,就能得到对应的未知输出值!是不是瞬间感觉明白了呢?

        接下来,我们将通过LSTM(长短期记忆神经网络)来进一步讲解这个过程,带你深入理解如何使用模型学习预测新数据!

【原理简图】

看图像更好理解

1. 模型原理简述

1、历史数据拟合

        1、数据导入与处理:

        通过xlsread('数据集.xlsx')函数导入数据集。本代码用的excel,也可以采用mat文件导入。其中包含多个特征和一个输出列(回归是连续数值,分类就是类别标签)。

        2、数据预处理:

        打乱数据集:使用randperm函数随机打乱数据,以防数据的排列影响训练效果

        划分训练集和测试集:将数据集划分为训练集和测试集,其中70%用于训练,30%用于测试。这是通过num_size(训练集的比例)来控制的。(也可以通过自定义双方个数)

        3、输入特征与输出分离:

        通过f_确定输入特征的维度,outdim定义了最后一列为输出(即目标值)。之后,将输入特征和输出分开。

        P_train和P_test分别表示训练集和测试集的输入特征数据,而T_train和T_test表示对应的输出数据。

        4、数据归一化:

        使用mapminmax进行归一化处理,将输入特征和输出标签都压缩到[0, 1]区间,确保各特征值的尺度一致,避免某些特征因为量纲差异而影响模型训练

        5、数据平铺和数据格式转化:

        P_train和P_test原本是二维数组,包含了输入数据的特征。reshape函数将这些数据转换为三维数据结构,使其可以正确输入到LSTM模型中。

        将三维数组的每个样本转换为LSTM网络期望的输入格式。LSTM网络期望的输入格式通常是一个单独的样本,以便于处理时序数据。每个样本的特征会被单独提取出来,并保存在p_train和p_test中。

        6、LSTM模型训练:

        使用划分好的训练数据P_train和T_train,通过LSTM进行训练。训练过程中,LSTM会通过反向传播算法以最小化预测输出与真实值之间的误差。

        7、模型性能评估:

        训练完成后,模型需要用测试数据集P_test进行评估。通常会使用均方根误差(RMSE)、平均绝对误差(MAE)等评价指标(分类就是准确率、F1分数等)来衡量模型的性能。通过这些指标,可以判断LSTM模型的预测性能。

2、预测新数据部分

        1、读取待预测数据:

        首先,通过xlsread('待预测数据.xlsx')读取新的数据集。这些数据仅包含与训练时相同的输入特征,但不包含输出列(即我们想要预测的目标值)。

        2、数据归一化:

        使用与训练时相同的归一化参数对新数据进行归一化:mapminmax('apply', new_data', ps_input)。

        ps_input是在训练过程中通过mapminmax获得的输入特征归一化参数,它确保新数据的特征值被压缩到与训练数据相同的范围内([0, 1])。

        3、数据平铺和格式转换:

        参考历史数据拟合时的数据平铺和格式转换,将new_data_normalized被重塑为一个4维数组,并进行格式转换使其符合LSTM的数据结构。

        4、预测新数据:

        使用训练好的LSTM网络net进行预测:t_sim3 = predict(net, p_new)。

        这里,p_new是经过处理的新数据,LSTM网络根据其输入特征进行推理,输出预测值。

        5、反归一化输出:

        由于模型的输出是经过归一化的(即压缩到[0, 1]区间),因此需要使用mapminmax('reverse', t_sim3', ps_output)将预测结果从归一化的范围映射回原始输出的范围。ps_output是在训练过程中获得的输出归一化参数,确保预测结果与原始数据的尺度一致。

        6、保存预测结果:

        将反归一化后的预测结果自动保存到Excel文件中,使用xlswrite('预测结果.xlsx', T_sim3')保存到预测结果.xlsx文件中。

通过上述原理简图网络结构图

可以更好的理解!

数据集和待测数据集展示:

你需要做的就是按对应格式替换数据即可!

数据集:第1-(n-1)列为输入,第n列为输出,输入和输出之间不要有空列即可

待测数据集:同上,只不过输出列是未知的,空着即可!

2.模型预测结果

        这个是模型的训练过程,其中包含训练集的RMSE、损失函数曲线随迭代的变化过程,这两幅图也可以单独调出

        训练集的拟合图:

        训练集的散点图:

        测试集的拟合图:

        测试集的散点图:

        预测结果:

代码最后将新数据的预测结果自动打印至对应的Excel中,方便大家对比和绘图

可以将该思想应用扩展至其他模型!

3、代码获取(也可以定制优化相关模型)

点击下方了解更多!(回  复:LSTM预测新数据)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值