在本专栏的第十三篇博文数学建模学习笔记(十三)神经网络——中:matlab程序实现记录过如何在matlab用代码进行神经网络的训练。
本篇内容将记录如何使用Neural Net Fitting工具箱,做神经网络预测时更为简便。
1.数据选取
例题:
原始数据:
导入数据到matlab:
新建变量,点击,复制相应数据。
2.工具箱的使用
这里有三种算法可供选择:
莱文贝格-马夸特方法(Levenberg–Marquardt algorithm)(梯度下降法)
贝叶斯正则化方法(Bayesian‐regularization)
量化共轭梯度法(Scaled Conjugate Gradient )
3.结果分析
注:设计验证集的概念就是判断什么时候会出现过拟合。图中自动画圈的地方是训练效果最好的次数,之后MSE上升,逐渐过拟合。
结果保存:
4.用模型进行预测
保存之后,工作区会多出文件:
写个循环,调用训练好的模型net,实现对数据的预测。
注,数据的输入需要注意,输入数据不合要求时,可能需要转置(默认以列输入)
下面是上面例题的预测代码:
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.总结
神经网络是万金油的存在,即各种场景都可以用到神经网路。
缺点在于神经网路不易数学解释,对数学建模比赛而言不是最佳选择,当然,用作检验结果的正确与否还是非常值得一提的。