工具/原料电脑MATLAB 软件方法/步骤蠓虫分类问题:对两种蠓虫(A 与 B)进行鉴别,依据的资料是触角和翅膀的长度,已知了 9 支Af 和 6 支 Apf 的数据如下:A: (1.24,1.27),(1。36,1.74),(1.38,1.64),(1。38,1.82),(1.38,1.90),(1.40,1。70), (1.48,1。82),(1.54,1。82),(1.56,2。08).B: (1。14,1。82),(1.18,1。96),(1.20,1.86),(1。26,2.00),(1。28,2.00),(1.30,1.96).根据如上资料,如何制定一种方法,正确地区分两类蠓虫?设定 1 代表 A 类,0 代表 B 类。输入数据,并设置目标值.p1=[1.24,1。27;1。36,1.74;1.38,1.64;1。38,1.82;1.38,1.90;1。40,1。70;1.48,1.82;1.54,1.82;1。56,2。08];p2=[1.14,1.82;1。18,1.96;1。20,1。86;1。26,2。00;1.28,2。00;1。30,1。96];p=[p1;p2]';goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)];将数据绘制成散点图figure(1);plot(p1(:,1),p1(:,2),'h’,p2(:,1),p2(:,2),’o’);hold onx=[1。24 1。80;1。28 1。84;1.40 2。04];plot(x(:,1),x(:,2),’rs');创建 一个 bp 神经网络,并设置网络参数:pr=minmax(p);%求解 p 矩阵中每个行向量中的最小值和最大值net=newff(pr,[3 2],{'logsig','logsig'},'trainrp');net。trainParam.show=50;net.trainParam.lr=0。01;net.trainParam。epochs=50000;训练网络:net=train(net,p,goal);对网络进行仿真,并输出仿真结果,结果如图所示:xtest=sim(net,x’)pt=[p x’];ptest=sim(net,pt);将仿真结果绘制在图形中figure(2);plot(1:length(p),goal(1,:),’*b’);hold onplot(1:length(ptest),ptest(1,:),’or');title('o 表示预测值 *表示实际值’);grid on以原数据进行仿真,比较目标数据与仿真数据,绘制误差变化图。pt=sim(net,p);figure(3);error=pt(1,:)-goal(1,:);plot(1:length(error),error);title(’误差变化图');运用 BP 神经网络求解分类问题,其实并不复杂,而且整个程序也不长。由上述结果可知,所建立的 BP 神经网络求能很好的结果该分类问题。且程序运行速度也很快,不超过 2 秒。注意事项创建神经网络时,注意传递函数的设置,不同的传递函数得到的结果可能会差别很大。多运行几次,得到的结果会精确一些。