matlab 蠓虫分类问题 &n…

来源:互联网 发布:刺客信条黑旗优化差 编辑:程序博客网 时间:2024/05/02 00:57
具体函数介绍等请查阅之前博文。

神经网络编程   蠓虫分类问题 
蠓虫分类问题可概括叙述如下:生物学家试图对两种蠓虫(Af与Apf)进行鉴别,
依据的资料是触角和翅膀的长度,已经测得了9 支Af和6 支Apf的数据如下: 
Af: (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). 
Apf: (1.14,1.82),(1.18,1.96) ,(1.20,1.86) ,(1.26,2.00),(1.28,2.00) ,(1.30,1.96). 
现在的问题是: 
(i )根据如上资料,如何制定一种方法,正确地区分两类蠓虫。 
(ii )对触角和翼长分别为(1.24,1.80) ,(1.28,1.84) 与(1.40,2.04) 的3个标本,用所得
到的方法加以识别。 
(iii )设Af是宝贵的传粉益虫,Apf是某疾病的载体,是否应该修改分类方法。 
如上的问题是有代表性的,它的特点是要求依据已知资料(9 支Af的数据和 6 支
Apf 的数据)制定一种分类方法,类别是已经给定的(Af或Apf)。今后,我们将9 支Af及6 支Apf的数据集合称之为学习样本。


Matlab 程序如下:
clear 
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]'; 
pr=minmax(p); 
goal=[ones(1,9),zeros(1,6);zeros(1,9),ones(1,6)]; 
plot(p1(:,1),p1(:,2),'h',p2(:,1),p2(:,2),'o') 
net=newff(pr,[3,2],{'logsig','logsig'}); 
net.trainParam.show = 10; 
net.trainParam.lr = 0.05; 
net.trainParam.goal = 1e-10; 
net.trainParam.epochs = 50000; 
net = train(net,p,goal); 
x=[1.24 1.80;1.28 1.84;1.40 2.04]'; 
y0=sim(net,p) 
y=sim(net,x) 

结果:
y0 =

  Columns 1 through 5

   0.999998469029217  0.999986403238122  0.999995778078291   0.999993827903529  0.999986645191870
   0.000001152581736  0.000007269557758  0.000002233563722   0.000003456760110  0.000008018255016

  Columns 6 through 10

   0.999996946747089  0.999999894981851  0.999999984537964   0.999999998562995  0.000000065368396
   0.000001642493507  0.000000068819772  0.000000011387286   0.000000001225300  0.999999872587407

  Columns 11 through 15

   0.000000079968829  0.000000077082618  0.000000275655831   0.000000621237010  0.000003796525943
   0.999999845954309  0.999999850419633  0.999999498798907   0.999998895866797  0.999993204155620


y =

   0.000000213425334  0.000004328847254  0.999995435541596
   0.999999586187982  0.999991726283911  0.000003400140759
0 0
原创粉丝点击