资源描述:
《模式识别与智能计算第3章.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、例3.1>>loadxy%读入数据>>x1=xy(:,1:4);y1=xy(:,5);r=size(x1,1);>>a1=max(x1);b1=min(x1);a2=max(y1);b2=min(y1);>>x1=0.002+0.996*(x1-b1(ones(r,1),:))./(a1(ones(r,1),:)-b1(ones(r,1),:));%归一化>>y1=0.002+0.996*(y1-b2(ones(r,1),:))./(a2(ones(r,1),:)-b2(ones(r,1),:));>>m=randperm(r); %产生1~23间
2、的随机自然数>>x_train=x1(m(1),:);y_train=y1(m(1),:);>>fori=1:r-5x_train=[x_train;x1(m(i),:)];y_train=[y_train;y1(m(i),:)]; %随机抽取19个样品作为训练集end>>x_test=x1(m(r-6),:);y_test=y1(m(r-6),:); %其余作为测试集>>fori=r-5:rx_test=[x_test;x1(m(i),:)];y_test=[y_test;y1(m(i),:)];end>>net=newff(minmax(x_tr
3、ain'),[401],{'logsig','logsig'},'trainlm'); %设置网络结构>>net.trainparam.epochs=10000;net.trainparam.lr=0.2;net.trainparam.show=200;%网络训练参数>>net.trainparam.goal=5e-3;>>[net,tr]=train(net,x_train',y_train'); %对网络训练>>y_test1=sim(net,x_test'); %仿真计算>>y_error=y_test-y_test1; %计算
4、预测误差例3.10>>loadmydata;>>x=guiyi(mydata);y=[0;0;0;0;0;1;1;1;1;1];>>y1=netcpn_sim(x1(1:10,:),y,x1(12,:))%来自乙地y1=1>>y1=netcpn_sim(x1(1:10,:),y,x1(11,:)) %来自甲地y1=0functiony=netcpn_sim(x_test,y_test,sample)%网络仿真函数[w,v]=netcpn_train(x_test,y_test);%网络训练函数[m1,n1]=size(x_test);[m3,n3]=
5、size(y_test);p=10*n1;out_sa=zeros(1,n3);m=size(sample,1);fork=1:msample(k,:)=sample(k,:)/norm(sample(k,:));fori=1:p;sc(i)=sample(k,:)*w(i,:)';end[temp,num]=max(sc);out_sa(1,:)=v(:,num)';out_sam=round(out_sa');out_same=num2str(out_sam);fori=1:n3out_sample(i)=bin2dec(out_same(i)')
6、;y(k,i)=out_sample(i);endendfunction[w,v]=netcpn_train(x_test,y_test)%训练函数[m1,n1]=size(x_test);[m3,n3]=size(y_test);fori=1:m1;x_test(i,:)=x_test(i,:)/norm(x_test(i,:));endmaxiterm=6000;t=1;p=10*n1;w=rands(p,n1)/2+0.5;v=rands(n3,p)/2+0.5;%p为竞争层单元数T=y_test;whilet7、%fori=1:p;w(i,:)=w(i,:)/norm(w(i,:));s(i)=x_test(j,:)*w(i,:)';end[temp,num]=max(s); %距离最近的向量w(num,:)=w(num,:)+0.1*(x_test(j,:)-w(num,:)); %修正w(num,:)=w(num,:)/norm(w(num,:));v(:,num)=v(:,num)+0.1*(y_test(j,:)'-T(j,:)');T(j,:)=v(:,num)';endt=t+1;end例3.11>>loadmydata %输入数据>>p=
8、mydata(:,2:end);p=guiyi(p);%自编的归一化函数>>t=mydata(