⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gongjiao.m

📁 支持向量机源代码 很好很强大噢
💻 M
字号:
%输入矢量p 
p=[52 50 0.5; 
56 55 1; 
55 59 1; 
57 55 1; 
35 33 0.1; 
32 34 0.1; 
57 56 1; 
58 56 1; 
59 58 1; 
59 58 1; 
56 55 1; 
58 57 1; 
59 57 1; 
59 58 1; 
55 56 1; 
51 50 0.5; 
52 53 0.5; 
51 50 0.5; 
60 59 1; 
55 54 1; 
57 57 1; 
35 31 0.1; 
58 59 1; 
56 56 1; 
59 59 1; 
30 30 0.1; 
50 49 0.5; 
53 50 0.5; 
57 56 1; 
58 58 1]'; 
%目标矢量 
t=[35 31 20 36 35 39 ; 
48 40 28 49 40 48 ; 
55 48 31 55 42 60; 
58 45 32 57 44 59 ; 
51 42 32 50 48 50 ; 
30 28 23 33 31 32 ; 
32 29 22 30 29 35 ; 
53 43 33 51 42 52; 
52 43 29 56 45 51 ; 
50 45 29 55 39 51 ; 
50 50 32 50 41 54 ; 
55 43 29 56 41 51 ; 
53 50 30 54 43 51 ; 
52 43 35 49 40 55 ; 
52 52 32 47 41 50 ; 
54 52 28 47 42 55; 
46 49 30 48 46 49 ; 
47 48 35 50 38 45 ; 
48 45 30 48 39 48 ; 
56 44 28 53 41 58 ; 
54 50 31 52 45 50 ; 
29 25 30 35 28 28 ; 
52 45 32 51 46 55 ; 
54 50 32 50 41 57; 
51 48 29 48 42 52; 
30 27 20 31 29 32 ; 
49 41 29 41 40 49 ; 
47 43 30 40 39 48 ; 
50 48 30 40 40 53; 
51 47 32 48 43 52 ]'; 
%[pn,minp,maxp,tn,mint,maxt] = premnmx(p,t);%归一化[-1,1] 
for i=1:3 
p(i,:)=(p(i,:)-min(p(i,:)))/(max(p(i,:))-min(p(i,:))); 
end 
for i=1:6 
t(i,:)=(t(i,:)-min(t(i,:)))/(max(t(i,:))-min(t(i,:))); 
end 
%归一化 
%u_test=[ t(:,28) t(:,29) t(:,30)]; 
%训练样本,P_train为输入向量,T_train为目标向量 
P_train=[p(:,1) p(:,2) p(:,3) p(:,4) p(:,5) p(:,6) p(:,7) p(:,8) p(:,9) p(:,10) p(:,11) p(:,12) p(:,13) p(:,14) p(:,15) p(:,16) p(:,17) p(:,18) p(:,19) p(:,20) p(:,21) p(:,22) ]; 
T_train=[t(:,1) t(:,2) t(:,3) t(:,4) t(:,5) t(:,6) t(:,7) t(:,8) t(:,9) t(:,10) t(:,11) t(:,12) t(:,13) t(:,14) t(:,15) t(:,16) t(:,17) t(:,18) t(:,19) t(:,20) t(:,21) t(:,22) ]; 
%测试样本,P_train为输入向量,T_train为目标向量 
P_test=[p(:,23) p(:,24) p(:,25) p(:,26) p(:,27) p(:,28) p(:,29) p(:,30)]; 
T_test=[t(:,23) t(:,24) t(:,25) t(:,26) t(:,27) t(:,28) t(:,29) t(:,30)]; 

x=[7 8 9 10 11 12 13 7]; 

%net=newff(minmax(p),[x(8),6],{\'tansig\',\'purelin\'},\'trainlm\')%minmax(p)是说p输入的最大值和最小值;[no(i),6]:Size of ith layer, for Nl layers;\'traingdm\':利用梯度下降法训练功能; 
%{\'logsig\',\'purelin\'}:转移函数 

%设置训练参数 
net.trainParam.show=50;%每隔1000次显示一次 
net.trainParam.lr=0.8;%lr表示学习速率 
net.trainParam.mc=0.8;%mc表示动量系数 
net.trainParam.epochs=500;%训练次数 
net.trainParam.goal=0.01;%目标误差 



for epoch=1:net.trainParam.epochs 

Oi=tansig(inputWeights*p,inputbias) %隐层神经元的输出 
Ok=purelin(layerWeights*Oi,layerbias) %输出层神经元的输出 
E=t-Ok 
A1 = purelin(Ok) 
deltak=dpurelin(Ok,A1) 
A2 = tansig(Oi) 
deltai=dtansig(Oi,A2) 

%调整输出层权值 
[dWki,db2]=learnbp(Oi,deltak,0.8) 
%[dWki,db2]=learnlm(Oi,deltak) 
layerWeights=layerWeights+dWki 
layerbias=layerbias+db2 
%调整输出层权值 
[dWij,db1]=learnbp(p,deltai,0.8) 
%[dWij,db1]=learnlm(p,deltai) 
inputWeights=inputWeights+dWij 
inputbias=inputbias+db1 

end 

net = nnt2ff(minmax(p),{inputWeights layerWeights},{inputbias layerbias},{tansig purelin},trainlm,learnbp,mse)%仿真函数 
%A=sim(net,P_test)%对BP网络进行仿真 

%计算仿真误差 
E=T_test-net 
MSE=mse(E) 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -