【matlab小白训练】BP神经网络

本文分享了作者作为Matlab新手如何使用BP神经网络处理实验数据,包括数据获取、训练过程、预测结果对比及误差分析。通过实际案例学习,探讨了参数调整对精度的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  首先,本人是个matlab小白,也是在参加数模的时候才接触到matlab,暑期在巩固matlab的时候,根据网上找的数据,边做边学matlab。

 

  此外,这是本人第一次撰写文章,必定会有很多疏漏。如果有侵权的地方,本人会立马删除此文章;如果有幸大佬能看到此文章,也欢迎大佬提出意见。

前言

  这次BP神经网络的练习数据来源是《人工神经网络》HZAU数模基地,我以此为基础进行BP神经网络训练,得到的代码可以作为后期参加比赛是直接参考使用。

一、数据获取

实验号臭氧浓度(mg/L)入口UV254UV254去除率(%)
11.160.11650.2
21.350.10459.5
31.720.07858.8
41.860.10766.2
51.970.13665.5
62.150.08264.5
72.230.12573.6
82.480.07676.4
92.790.12278.5
102.850.09279.2
113.070.08181.4
123.450.06890.3
133.590.07793.1
143.80.10898.2
153.930.12897.3
164.140.06398.1
174.460.13597.3
184.550.0798.8
194.840.12696.9
205.030.08798.6

二、BP神经网络代码

1.训练

其中我取了上表前19组数据进行训练,代码如下:

%自行导入输入数据x和输出数据y。
input_x = [x1'; x2'];
output_y = y';

%注意将列向量转置成行向量!!!
%本模板的输入数据x1,x2,输出数据为y,。可根据实际情况删改

%可用“setdemorandstream(114514);”固定随机种子,防止每次训练结果不一样

%隐藏节点数可以根据经验公式n=2m+1确定,其中n为隐藏节点数,m为输入个数;我这里直接取了3。
%隐层的传递函数为tansig,输出层的传递函数为purelin
%使用trainlm方法训练

net = newff(input_x,output_y,3,{'tansig','purelin'},'trainlm');

%常用参数的设置
net.trainparam.goal = 0.001;   %训练目标:均方误差低于0.001
net.trainparam.show =  200;    %每训练200次展示一次结果
net.trainparam.epochs = 10000; %最大训练次数为10000

[net,tr] = train(net,input_x,output_y); %调用matlab神经网络工具箱自带的train函数训练网络
simout = sim(net,input_x);     %调用matlab神经网络工具箱自带的sim函数得到的网络的预测值

2.画图对比原本数据和预测的数据 

figure;                        %新建画图窗口
t=1:length(simout);
plot(t,y,t,simout,'r')         %画图,对比原来的y和网络预测

3.预测数据

x = [5.03;0.087]; %表中第20个实验的数据
simy = sim(net,x) %得到的预测值

原本的20个实验的结果是98.6,而预测出来的时99.6385,有细微差别。

三、总结

练习的过程中发现,要将导入的数据转置成行向量(一般matlab导入的都是列向量)

预测结果还是有一些误差的,不过这个应该可以通过调参数来提高准确度的(后续我还是得反复摸索改进)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值