1. 程式人生 > >MATLAB神經網路工具箱(程式碼簡單實現)

MATLAB神經網路工具箱(程式碼簡單實現)

根據網上搜素的關於MATLAB神經網路工具箱的GUI操作,結合書上的程式碼來跑了一遍,發現程式碼是引用了神經網路工具箱來做工作

%% 該程式碼為基於BP神經網路的預測算
%% 清空環境變數
clc
clear

%% 訓練資料預測資料提取及歸一化
%下載輸入輸出資料
load data input output

%從12000間隨機排序
k=rand(1,2000);
[m,n]=sort(k);

%找出訓練資料和預測資料
input_train=input(n(1:1900),:)';
output_train=output(n(1:1900));
input_test=input(n(1901:2000),:)'
; output_test=output(n(1901:2000)); %選連樣本輸入輸出資料歸一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train); %% BP網路訓練 % %初始化網路結構 net=newff(inputn,outputn,5); net.trainParam.epochs=100; net.trainParam.lr=0.1; net.trainParam.goal=0.00004; %網路訓練 net=train(net,inputn,outputn); %% BP網路預測 %
預測資料歸一化 inputn_test=mapminmax('apply',input_test,inputps); %網路預測輸出 an=sim(net,inputn_test); %網路輸出反歸一化 BPoutput=mapminmax('reverse',an,outputps); %% 結果分析 figure(1) plot(BPoutput,':og') hold on plot(output_test,'-*'); legend('預測輸出','期望輸出') title('BP網路預測輸出','fontsize',12) ylabel('函式輸出','fontsize',12) xlabel('樣本','fontsize',12) %
預測誤差 error=BPoutput-output_test; figure(2) plot(error,'-*') title('BP網路預測誤差','fontsize',12) ylabel('誤差','fontsize',12) xlabel('樣本','fontsize',12) figure(3) plot((output_test-BPoutput)./BPoutput,'-*'); title('神經網路預測誤差百分比') errorsum=sum(abs(error));

newff:BP神經網路引數設定函式,構建了一個帶引數神經網路
net=newff(P,T,S,TF,BTF,BLF,PL,IPF,OPF,DDF)
P:輸入資料矩陣
T:輸出資料矩陣
S:隱含層節點數
TF:節點傳遞函式,包括硬限幅傳遞函式hardlim、對稱硬限幅傳遞函式hardlims、現象傳遞函式purelin、正切S型傳遞函式tansig、對數S型傳遞函式logsig。
BTF:訓練函式
BLF:網路學習函式
PF:效能分析函式
IPF:輸入處理函式
OPF:輸出處理函式
DDF:驗證資料劃分函式

trian:BP神經網路訓練函式
[net,tr]=train(NET,X,T,Pi,Ai)
NET:待訓練網路
X:輸入資料矩陣
T:輸出資料矩陣
Pi:初始化輸入層條件
Ai:初始化輸出層條件
net:訓練好的網路
tr:訓練過程記錄

sim:BP神經網路預測函式
y=sim(net,x)
net:訓練好的網路
x:輸入資料
y:網路預測資料