資源簡介
BP+三個數據集.rar

代碼片段和文件信息
clc;
%?data?=?load(‘P.mat‘);
data?=?importdata(‘Page.mat‘);
%輸入輸出數據
input=data(:1:10);
output1?=data(:11);
%排序
k=rand(15473);
[mn]=sort(k);
%把輸出從1維變成5維
for?i=1:5473
????switch?output1(i)
????????case?1
????????????output(i:)=[1?0?0?0?0];
????????case?2
????????????output(i:)=[0?1?0?0?0];
????????case?3
????????????output(i:)=[0?0?1?0?0];
????????case?4
????????????output(i:)=[0?0?0?1?0];
????????case?5
????????????output(i:)=[0?0?0?0?1]
????end
end
%隨機提取4000個樣本為訓練樣本,1473個樣本為預測樣本
input_train=input(n(1:4000):)‘;
output_train=output(n(1:4000):)‘;
input_test=input(n(4001:5473):)‘;
output_test=output(n(4001:5473):)‘;
%輸入數據歸一化
[inputninputps]=mapminmax(input_train);
%%?網絡結構初始化
innum=10;
midnum=25;
outnum=5;
?
%權值初始化
w1=rands(midnuminnum);
b1=rands(midnum1);
w2=rands(midnumoutnum);
b2=rands(outnum1);
w2_1=w2;w2_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;
%%?網絡訓練
for?ii=1:10
????E(ii)=0;
????for?i=1:1:4000
???????%%?網絡預測輸出?
????????x=inputn(:i);
????????%?隱含層輸出
????????for?j=1:1:midnum
????????????I(j)=inputn(:i)‘*w1(j:)‘+b1(j);
????????????Iout(j)=1/(1+exp(-I(j)));
????????end
????????%?輸出層輸出
????????yn=w2‘*Iout‘+b2;
????????
???????%%?權值閥值修正
????????%計算誤差
????????e=output_train(:i)-yn;?????
????????E(ii)=E(ii)+sum(abs(e));
????????
????????%計算權值變化率
????????dw2=e*Iout;
????????db2=e‘;
????????
????????for?j=1:1:midnum
????????????S=1/(1+exp(-I(j)));
????????????FI(j)=S*(1-S);
????????end??????
????????for?k=1:1:innum
????????????for?j=1:1:midnum
????????????????dw1(kj)=FI(j)*x(k)*(e(1)*w2(j1)+e(2)*w2(j2)+e(3)*w2(j3)+e(4)*w2(j4));
????????????????db1(j)=FI(j)*(e(1)*w2(j1)+e(2)*w2(j2)+e(3)*w2(j3)+e(4)*w2(j4));
????????????end
????????end
???????????
????????w1=w1_1+xite*dw1‘;
????????b1=b1_1+xite*db1‘;
????????w2=w2_1+xite*dw2‘;
????????b2=b2_1+xite*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;
????end
end
inputn_test=mapminmax(‘apply‘input_testinputps);
for?ii=1:1
????for?i=1:1473?%4000
????????%隱含層輸出
????????for?j=1:1:midnum
????????????I(j)=inputn_test(:i)‘*w1(j:)‘+b1(j);
????????????Iout(j)=1/(1+exp(-I(j)));
????????end
????????
????????fore(:i)=w2‘*Iout‘+b2;
????end
end
?%根據網絡輸出找出數據屬于哪類
for?i=1:1473
????output_fore(i)=find(fore(:i)==max(fore(:i)));
end
%BP網絡預測誤差
error=output_fore-output1(n(4001:5473))‘;
%畫出預測Page種類和實際Page種類的分類圖
figure(1)
plot(output_fore‘r‘)
hold?on
plot(output1(n(4001:5473))‘‘b‘)
legend(‘預測Page類別‘‘實際Page類別‘)
%畫出誤差圖
figure(2)
plot(error)
title(‘BP網絡分類誤差‘‘fontsize‘12)
xlabel(‘Page類型‘‘fontsize‘12)
ylabel(‘分類誤差‘‘fontsize‘12)
%print?-dtiff?-r600?1-5
k=zeros(15);??
%找出判斷錯誤的分類屬于哪一類
for?i=1:1473
????if?error(i)~=0
????????[bc]=max(output_test(:i));
????????switch?c
????????????case?1?
????????????????k(
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????153899??2017-12-05?22:17??20175428002-胡超\Letter.mat
?????文件??????48400??2017-12-14?01:04??20175428002-胡超\Letter錯誤率.jpg
?????文件???????3785??2017-12-16?20:19??20175428002-胡超\MyNN.m
?????文件???????5826??2017-12-08?18:18??20175428002-胡超\MyNN1Page.m
?????文件???????5307??2017-12-14?01:00??20175428002-胡超\MyNN2Letter.m
?????文件???????2719??2017-12-16?11:56??20175428002-胡超\MyNN3Spam.m
?????文件?????119771??2017-12-05?22:18??20175428002-胡超\Page.mat
?????文件??????66114??2017-12-08?18:20??20175428002-胡超\Page訓練前.jpg
?????文件??????65895??2017-12-08?18:20??20175428002-胡超\Page訓練后.jpg
?????文件??????42258??2017-12-08?18:21??20175428002-胡超\Page錯誤率.jpg
?????文件?????218942??2017-12-05?22:19??20175428002-胡超\Spam.mat
?????文件??????46822??2017-12-16?23:12??20175428002-胡超\Spam錯誤率.jpg
?????目錄??????????0??2017-12-17?00:09??20175428002-胡超
-----------?---------??----------?-----??----
???????????????779738????????????????????13
- 上一篇:excel 2007版批量添加字符串插件
- 下一篇:電離層數據提取
評論
共有 條評論