预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共43页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

实际应用问题神经网络算法简介神经网络算法简介多层感知器性能指标:均方误差达到最小分类问题的MATLAB软件实现%建立一个感知器net=newp([03;03],1);%绘制输入向量plotpv(P,T);E=1;%初始化感知器net=init(net);linehandle=plotpc(net.IW{1},net.b{1});分类问题的MATLAB软件实现%利用训练好的感知器对未知类别样本进行分类p=[1.24,1.28,1.4;1.8,1.84,2.04];a=sim(net,p);plotpv(p,a);ThePoint=findobj(gca,'type','line');set(ThePoint,'Color','red');holdon;plotpv(P,T);plotpc(net.IW{1},net.b{1});holdoff;disp('Endofpercept')以上结果是图形化的结果,如下给出数值化的结果:mcfl1.m仿真结果:BP网络(Back-PropagationNetwork)学习过程由信号的正向传播与反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出(教师信号)不符合时,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此信号作为修正各单元权值的依据。MATLAB中有关BP网络的重要函数MATLAB中有关BP网络的重要函数(1)purelin——线性传递函数;(2)tansig——双曲正切S型(sigmoid)传递函数;(3)logsig——对数S型(sigmoid)传递函数;2、训练函数:如果对神经网络的输入、输出数据进行一定的预处理,可以加快网络的训练速度。有三种方法:1)归一化将每组数据都变为-1至1之间的数,matlab中有函数:premnmx,postmnmx,tramnmx算法:pn=2*(p-minp)/(maxp-minp)-1;2)标准化将每组数据变换为均值为0,方差为1的数,所涉及的函数有:prestd,posttd,trastd3)正交化主成分分析也可以将数据进行正交处理,减少输入数据的处理,函数有:prepca,trapca.输入向量P=[012345678910];期望输出T=[01234321234];Y=-2.3431-2.7532-2.4510-1.2784-0.8590-0.29810.24950.48111.03751.22681.4232T=[01234321234];%期望输出Y=-0.00191.00451.98963.01573.96373.10211.81751.20561.83223.11623.9551T=[01234321234];%期望输出修改程序:Y=0.00051.00261.99473.01343.94293.12111.84821.17551.85683.11503.9595范例:DNA序列模式分类问题a1='aggcacggaaaaacgggaataacggaggaggacttggcacggcattacacggaggacgaggtaaaggaggcttgtctacggccggaagtgaagggggatatgaccgcttgg';b1='gttagatttaacgttttttatggaatttatggaattataaatttaaaaatttatattttttaggtaagtaatccaacgtttttattactttttaaaattaaatatttatt';……二、特征提取三、神经网络对DNA序列分类问题的应用经过统计计算,得到已知类别的输入向量:p=[01051322211918231743122171923;12041114011315131199214127;5580109571190010003100;71016211965860001003200;10111521112129562111011011];由前20个已知类别的DNA序列片段可以构造出目标向量:t=[11111111110000000000];a=01100010100001101000a=01100010100001101000并附图形:误差曲线图2、应用BP网络对DNA序列进行分类:(DNAbp.m)net=newff([020;016;012;012;013],[31],{'logsig''purelin'},'traingdx');net.trainparam.show=100;%两次显示之间的训练步数ne