資源描述:
《BP神經(jīng)網(wǎng)絡(luò)的數(shù)據(jù)分類(lèi)-MATLAB源代碼.doc》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫(kù)。
1、%%%清除空間clcclearall;closeall;%%%訓(xùn)練數(shù)據(jù)預(yù)測(cè)數(shù)據(jù)提取以及歸一化%%%下載四類(lèi)數(shù)據(jù)loaddata1c1loaddata2c2loaddata3c3loaddata4c4%%%%四個(gè)特征信號(hào)矩陣合成一個(gè)矩陣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間的隨機(jī)排序k=rand(1,2000);[m,n]=sort(k);%
2、%m為數(shù)值,n為標(biāo)號(hào)%%%%%%%%%%%輸入輸出數(shù)據(jù)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%%%%隨機(jī)抽取1500個(gè)樣本作為訓(xùn)練樣本,500個(gè)樣本作為預(yù)測(cè)樣本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,:))’;%%%%輸入輸出數(shù)據(jù)歸一化[inputn,inputps]=mapminmax(input_train);%%%網(wǎng)絡(luò)結(jié)構(gòu)初始化innum=24;%輸入層midnum=25;%隱含層outnum=4;%輸出層%權(quán)值初始化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;%%%學(xué)習(xí)速率xite=0.1;alfa=0.01;%%%%%網(wǎng)絡(luò)訓(xùn)練forii=1:10E(ii)=0;fori=1:1:1500;%%網(wǎng)絡(luò)預(yù)測(cè)輸出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;%%%權(quán)值閾值修正%計(jì)算權(quán)值變化率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%%%%語(yǔ)音特征信號(hào)分類(lèi)input_test=mapminmax(‘a(chǎn)pply’,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%%%結(jié)果分析%%%%根
7、據(jù)網(wǎng)絡(luò)輸出找出數(shù)據(jù)屬于哪類(lèi)fori=1:500output_fore(i)=find(fore(:,i)==max(fore(:,i)));end%%%%%BP網(wǎng)絡(luò)預(yù)測(cè)輸出error=output_fore-output1(n(1501:2000))’;%%畫(huà)出分類(lèi)圖figure(1)plot(output_fore,‘r’)holdonplot(output1(n(1501:2000))’,‘b’);legend(‘預(yù)測(cè)語(yǔ)音類(lèi)別’,‘實(shí)際語(yǔ)音類(lèi)別’)%%%畫(huà)出誤差圖figure