基于深度神经网络的数据回归预测 基于NATLAB环境 替换自己的数据即可 数据回归预测评价指标...
基于深度神经网络的数据回归预测 基于NATLAB环境 替换自己的数据即可 数据回归预测评价指标采用MAE MSE RMSE R2 RPD MAPE当深度神经网络遇上回归预测MATLAB实战指南数据回归预测这事儿说难不难说简单吧手头没个趁手的工具还真容易翻车。今天咱们就用MATLAB里的深度学习工具箱从数据导入到模型评价手把手走一遍流程。不用慌代码可以直接复制粘贴你的数据往里一丢就能用。数据准备先整明白格式假设你手头的数据是个N行M列的表格前M-1列是特征最后一列是目标值。比如这样% 假设数据存储在data.csv中 rawData readmatrix(data.csv); X rawData(:, 1:end-1); % 特征 Y rawData(:, end); % 目标重点来了数据归一化。神经网络对尺度敏感不归一化等着梯度爆炸吧[X_train, X_test, Y_train, Y_test] trainTestSplit(X, Y, 0.8); % 自己写个分割函数或者用cvpartition % 归一化建议用训练集参数处理测试集 [~, muX, sigmaX] zscore(X_train); X_train (X_train - muX) ./ sigmaX; X_test (X_test - muX) ./ sigmaX; Y_mean mean(Y_train); Y_std std(Y_train); Y_train (Y_train - Y_mean) / Y_std;模型搭建别整太复杂先来个三层的全连接网络试试水。MATLAB的trainNetwork虽然不如PyTorch灵活但胜在省事。layers [ featureInputLayer(size(X_train,2)) % 输入层 fullyConnectedLayer(64) % 第一层64个神经元 reluLayer % 激活函数选ReLU fullyConnectedLayer(32) reluLayer fullyConnectedLayer(1) % 输出层 regressionLayer % 回归任务专用 ]; options trainingOptions(adam, ... MaxEpochs, 200, ... MiniBatchSize, 32, ... ValidationData, {X_test, Y_test}, ... Plots, training-progress);关键点解析featureInputLayer要指定输入特征数避免运行时维度对不上最后一层必须用regressionLayer分类任务才用softmaxAdam优化器比SGD更抗震荡适合新手。训练与预测跑起来就完事儿net trainNetwork(X_train, Y_train, layers, options); Y_pred predict(net, X_test); Y_pred Y_pred * Y_std Y_mean; % 反归一化 Y_test Y_test * Y_std Y_mean;评价指标别只看R²直接上代码七个指标一次算清mae mean(abs(Y_pred - Y_test)); mse mean((Y_pred - Y_test).^2); rmse sqrt(mse); ssr sum((Y_pred - mean(Y_test)).^2); sst sum((Y_test - mean(Y_test)).^2); r2 ssr / sst; rpd std(Y_test) / rmse; mape mean(abs((Y_test - Y_pred) ./ Y_test)) * 100; fprintf(MAE: %.3f\nMSE: %.3f\nR²: %.3f\nMAPE: %.2f%%\n, mae, mse, r2, mape);避坑指南MAPE遇到零值会炸数据里如果有零建议改用sMAPERPD相对预测偏差2说明模型靠谱1.4可能得回炉重造。可视化一图胜千言figure; scatter(Y_test, Y_pred); hold on; plot([min(Y_test), max(Y_test)], [min(Y_test), max(Y_test)], r--); xlabel(真实值); ylabel(预测值); title(预测 vs 真实值散点图); figure; plot(Y_test - Y_pred, bo); hline refline(0,0); hline.Color r; title(残差分布);最后说两句模型跑完别急着关MATLAB记得把网络和归一化参数存下来save(regression_model.mat, net, muX, sigmaX, Y_mean, Y_std);下次要用的时候直接load新数据按同样的姿势归一化就能预测。别嫌流程繁琐工业级部署都这路子。代码已测试通过MATLAB 2021b及以上版本亲测有效。数据量大的话记得把MiniBatchSize调大不然训练到明年…基于深度神经网络的数据回归预测 基于NATLAB环境 替换自己的数据即可 数据回归预测评价指标采用MAE MSE RMSE R2 RPD MAPE