基于神经网络的数据分类

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

基于神经网络的数据分类花萼长度花萼宽度花瓣长度花瓣宽度类别5.43.91.70.4153.41.50.216.22.24.51.525.52.341.326.12.84.71.227.93.86.4236.32.85.11.53有一批花可分为三个品种,利用神经网络算法,根据花萼长度,花萼宽度,花瓣长度和花瓣宽度对其进行分类。样本包含150组数据,选择90组作为训练样本,60组作为测试样本。输入数据为[花萼长度花萼宽度花瓣长度花瓣宽度],输出数据为花的品种的类别。要做的工作:1.建立一个神经网络2.使用样本训练这个网络3.使用新的数据集测试这个网络分类的准确性BP神经网络网络层数:2输入层节点数:4输出层节点数:1隐层节点数:m=sqrt(n+l)+a(n为输入层节点数,l为输出层节点数,a为1~10之间的常数)%导入训练样本的数据data=load(‘data.txt’);p=data(:,1:4)‘;%输入量t=data(:,5)‘;%输出量%数据归一化到[-1+1][pn,ps]=mapminmax(p);%导入测试样本的数据testdata=load(‘testdata.txt’);p_test=testdata(:,1:4)‘;%输入量t_test=testdata(:,5)‘;%输出量%数据归一化到[-1+1][pn_test,ps]=mapminmax(p_test);1.数据预处理:data.txt中有90组数据,作为训练样本;testdata.txt中有60组数据,作为测试样本。3.训练参数选择:net.trainParam.show=50;%显示训练结果的间隔步数net.trainParam.epochs=1000;%最大训练次数net.trainParam.goal=0.001;%训练目标误差net.trainParam.lr=0.01;%学习系数net=train(net,pn,t);%开始训练2.创建一个新的BP神经网络:net=newff(minmax(pn),[101],{'tansig''purelin'},'traingdx');%隐含层传递函数为transing;%输出层传递函数为purelin;%训练函数为traingdx(有动量和自适应lr的梯度下降法)4.仿真并绘制结果:a=sim(net,pn_test);a=round(a);%四舍五入取整figure(1)plot(a,':or')holdonplot(t_test,'-*');legend(‘预测类别‘,’实际类别’)title(‘BP网络预测输出')ylabel(‘类别')xlabel(‘样本’)%预测误差error=a-t_test;figure(3)plot(error,'-*')title(‘BP网络预测误差')ylabel(‘误差')xlabel(‘样本')figure(3)count=0;%误分类次数holdon;fori=1:60%预测与实际类别都为1ifa(i)1.5ift(i)1.5plot(p(1,i),p(4,i),‘ro’);elseplot(p(1,i),p(4,i),'r*');count=count+1;End%预测与实际类别都为3elseifa(i)2.5ift_test(i)2.5plot(p(1,i),p(4,i),'go');elseplot(p(1,i),p(4,i),'g*');count=count+1;end%预测与实际类别都为1elseif(t_test(i)=2.5)&&(t_test(i)=1.5)plot(p(1,i),p(4,i),'bo');elseplot(p(1,i),p(4,i),'b*');count=count+1;endendendrate=(60-count)/60%正确率5.显示分类结果:44.555.566.5700.20.40.60.811.21.41.61.8图中红色为第一类,蓝色为第二类,绿色为第三类。结果显示有一个数据分类错误,分类正确率为98.33%。rate=0.9833出现分类错误的原因可能是训练的样本太少,或者是隐层节点数选择不合适,接下来在经验值范围内改变隐层节点数,观察分类结果。010203040506000.10.20.30.40.50.60.70.80.91BP网络预测误差误差样本010203040506011.21.41.61.822.22.42.62.83样本类别BP网络预测输出预测输出期望输出010203040506011.21.41.61.822.22.42.62.83样本类别BP网络预测输出预测输出期望输出0102030405060-1-0.8-0.6-0.4-0.200.20.40.60.81BP网络预测误差误差样本44.555.566.5700.20.40.60.811.21.41.61.8当隐层节点数为9时,分类正确率为100%。RBF神经网络输入层节点数:4输出层节点数:1隐层节点数:m=sqrt(n+l)+a(n为输入层节点数,l为输出层节点数,a为1~10之间的常数)2.创建一个新的RBF神经网络:net=newrb(pn,t,0.001,1,10,1);%散步常数spread=1%训练精度goal=0.001%显示频率df=1%隐含层节点数m=101.数据预处理3.仿真a=sim(net,pn_test);a=round(a);%对预测出的类别a取整4.结果分析44.555.566.5700.20.40.60.811.21.41.61.8图中红色为第一类,蓝色为第二类,绿色为第三类。结果显示有一个数据分类错误,分类正确率为98.33%。010203040506000.10.20.30.40.50.60.70.80.91RBF网络预测误差误差样本010203040506011.21.41.61.822.22.42.62.83样本类别RBF网络预测输出预测输出期望输出通过上述实验可看出BP神经网络和RBF神经网络都能通过学习和训练以任意精度逼近任何非线性函数。由上图可看出:RBF算法在训练过程中比BP算法学习速度快。1.BP神经网络和RBF神经网络都能通过训练学习,以任意精度逼近任意非线性函数。2.神经网络隐含层的节点个数能影响网络输出结果的精度。3.RBF算法比BP算法学习速度快,需要训练的时间短。结论:

1 / 16
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功