数学建模暑期集训12:神经网络预测——Neural Net Fitting工具箱的使用

2022-06-14 11:37:30 浏览数 (1)

在本专栏的第十三篇博文数学建模学习笔记(十三)神经网络——中:matlab程序实现记录过如何在matlab用代码进行神经网络的训练。 本篇内容将记录如何使用Neural Net Fitting工具箱,做神经网络预测时更为简便。

1.数据选取

例题:

原始数据:

导入数据到matlab: 新建变量,点击,复制相应数据。

2.工具箱的使用

这里有三种算法可供选择: 莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)(梯度下降法) 贝叶斯正则化方法(Bayesian‐regularization) 量化共轭梯度法(Scaled Conjugate Gradient )

3.结果分析

注:设计验证集的概念就是判断什么时候会出现过拟合。图中自动画圈的地方是训练效果最好的次数,之后MSE上升,逐渐过拟合。

结果保存:

4.用模型进行预测

保存之后,工作区会多出文件:

写个循环,调用训练好的模型net,实现对数据的预测。 注,数据的输入需要注意,输入数据不合要求时,可能需要转置(默认以列输入) 下面是上面例题的预测代码:

代码语言:javascript复制
load data_Octane.mat
% 尽量使用新版的Matlab
% 在Matlab的菜单栏点击APP,再点击Neural Fitting app.

% 利用训练出来的神经网络模型对数据进行预测
% 例如我们要预测编号为51的样本,其对应的401个吸光度为:new_X(1,:)
% sim(net, new_X(1,:))
% 错误使用 network/sim (line 266)
% Input data sizes do not match net.inputs{1}.size.
% net.inputs{1}.size
 
% 这里要注意,我们要将指标变为列向量,然后再用sim函数预测
sim(net, new_X(1,:)')

% 写一个循环,预测接下来的十个样本的辛烷值
predict_y = zeros(10,1); % 初始化predict_y
for i = 1: 10
    result = sim(net, new_X(i,:)');
    predict_y(i) = result;
end
disp('预测值为:')
disp(predict_y)

5.总结

神经网络是万金油的存在,即各种场景都可以用到神经网路。 缺点在于神经网路不易数学解释,对数学建模比赛而言不是最佳选择,当然,用作检验结果的正确与否还是非常值得一提的。

0 人点赞