资源描述:
《BP神经网络的数据分类-MATLAB源代码.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、%%%清除空间clcclearall;closeall;%%%训练数据预测数据提取以及归一化%%%下载四类数据loaddata1c1loaddata2c2loaddata3c3loaddata4c4%%%%四个特征信号矩阵合成一个矩阵data(1:500,:)=data1(1:500,:);data(501:1000,:)=data2(1:500,:);data(1001:1500,:)=data3(1:500,:);data(1501:2000,:)=data4(1:500,:);%%%%%%从1到2000间的随机排序k=rand(1,2000);[m,n]=sort(k);%
2、%m为数值,n为标号%%%%%%%%%%%输入输出数据input=data(:,2:25);output1=data(:,1);%%%%%%把输出从1维变到4维fori=1:1:2000switchoutput1(i)case1output(i,:)=[1000];case2output(i,:)=[0100];case3output(i,:)=[0010];case4output(i,:)=[0001];endend%%%%随机抽取1500个样本作为训练样本,500个样本作为预测样本input_train=input(n(1:1500,:))’;output_train=out
3、put(n(1:1500,:))’;input_test=input(n(1501:2000,:))’;output_test=output(n(1501:2000,:))’;%%%%输入输出数据归一化[inputn,inputps]=mapminmax(input_train);%%%网络结构初始化innum=24;%输入层midnum=25;%隐含层outnum=4;%输出层%权值初始化w1=rands(midnum,innum);b1=rands(midnum,1);w2=rands(midnum,outnum);b2=rands(outnum,1);w2_1=w2;w2_
4、2=w2_1;w1_1=w1;w1_2=w1_1;b1_1=b1;b1_2=b1_1;b2_1=b2;b2_2=b2_1;%%%学习速率xite=0.1;alfa=0.01;%%%%%网络训练forii=1:10E(ii)=0;fori=1:1:1500;%%网络预测输出x=inputn(:,j);%%%隐含层输出forj=1:1:midnuml(j)=inputn(:,i)’*w1(j,:)’+b1(j);lout(j)=1/(1+exp(-1(j)));end%%%%输出层输出yn=w2’*lout’+b2;%%%权值阈值修正%计算权值变化率dw2=e*lout;db2=e’
5、;forj=1:1:midnumS=1/(1+exp(-l(j)));Fl(j)=S*(1-S);endfork=1:1:innumforj=1:1:midnumdw1(k,j)=Fl(j)*x(k)*(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));db1(j)=Fl(j)**(e(1)*w2(j,1)+e(2)*w2(j,2)+e(3)*w2(j,3)+e(4)*w2(j,4));endendw1=w1_1+xite*dw1';b1=b1_1+xite*db1';w2=w2_1+xite*dw2';b2=b2_1+xi
6、te*db2';w1_2=w1_1;w1_1=w1;w2_2=w2_1;w2_1=w2;b1_2=b1_1;b1_1=b1;b2_2=b2_1;b2_1=b2;endend%%%%语音特征信号分类input_test=mapminmax(‘apply’,input_test,inputps);forii=1:1fori=1:500%隐含层输出forj=1:1:midnuml(j)=input_test(:,i)’*w1(j,:)’+b1(j);lout(j)=1/(1+exp(-l(j)));endfore(:,i)=w2’*lout’+b2;endend%%%结果分析%%%%根
7、据网络输出找出数据属于哪类fori=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i)));end%%%%%BP网络预测输出error=output_fore-output1(n(1501:2000))’;%%画出分类图figure(1)plot(output_fore,‘r’)holdonplot(output1(n(1501:2000))’,‘b’);legend(‘预测语音类别’,‘实际语音类别’)%%%画出误差图figure