您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > AI人工智能 > 孙杨威_12281201_模式识别第7次实验报告(2)
实验报告学生姓名:孙杨威学号:12281201实验地点:九教北401实验室实验时间:2014.11.13一、实验名称:BP神经网络算法二、实验原理:BP网络模型处理信息的基本原理是:输入信号Xi通过中间节点(隐层点)作用于输出节点,经过非线形变换,产生输出信号Yk,网络训练的每个样本包括输入向量X和期望输出量t,网络输出值Y与期望输出值t之间的偏差,通过调整输入节点与隐层节点的联接强度取值Wij和隐层节点与输出节点之间的联接强度Tjk以及阈值,使误差沿梯度方向下降,经过反复学习训练,确定与最小误差相对应的网络参数(权值和阈值),训练即告停止。此时经过训练的神经网络即能对类似样本的输入信息,自行处理输出误差最小的经过非线形转换的信息。三、实验内容:有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。用已有的数据训练一个神经网络用作分类器。四、实验步骤:1.建立一个新的网络2.使用样本训练这个网络3.使用新的数据集模拟这个网络五、实验代码及分析:bp_test.m%读取测试数据[t1t2t3t4c]=textread('testData.txt','%f%f%f%f%s',75);%测试数据归一化testInput=tramnmx([t1,t2,t3,t4]',minI,maxI);%仿真Y=sim(net,testInput);s=length(c);output1=zeros(s,3);fori=1:sifstrcmp(c(i),'Isetosa')~=0output1(i,1)=1;elseifstrcmp(c(i),'Iversicolor')~=0output1(i,2)=1;elseoutput1(i,3)=1;endend%统计识别正确率[s1,s2]=size(Y);hitNum=0;fori=1:s2[m,Index]=max(Y(:,i));if(output1(i,Index)==1)hitNum=hitNum+1;endendsprintf('识别率是%3.3f%%',100*hitNum/s2)bp_rain.m%将Iris数据集分为2组,每组各75个样本,每组中每种花各有25个样本。%其中一组作为以上程序的训练样本,另外一组作为检验样本。%为了方便训练,将3类花分别编号为1,2,3。%使用这些数据训练一个4输入(分别对应4个特征),3输出(分别对应该样本属于某一品种的可能性大小)的前向网络。clearall;%读取训练数据[f1,f2,f3,f4,class]=textread('trainData.txt','%f%f%f%f%s',75);%特征值归一化[input,minI,maxI]=premnmx([f1,f2,f3,f4]');%构造输出矩阵s=length(class);output=zeros(s,3);fori=1:sifstrcmp(class(i),'Isetosa')~=0output(i,1)=1;elseifstrcmp(class(i),'Iversicolor')~=0output(i,2)=1;elseoutput(i,3)=1;endend%创建神经网络net=newff(minmax(input),[103],{'logsig''purelin'},'traingdx');%设置训练参数net.trainparam.show=50;%显示中间结果的周期;net.trainparam.epochs=200;%最大的迭代次数;net.trainparam.goal=0.05;%神经网络的训练的目标误差;net.trainParam.lr=0.01;%学习率;%开始训练net=train(net,input,output');六、实验结果及分析:识别率:93.333%七、总结及心得体会:在网上查了一些资料,建议在训练神经网络前一般需要对数据进行预处理,一种重要的预处理手段是归一化处理,输入数据的单位不一样,有些数据的范围可能特别大,导致的结果是神经网络收敛慢、训练时间长。
本文标题:孙杨威_12281201_模式识别第7次实验报告(2)
链接地址:https://www.777doc.com/doc-6042001 .html