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

kiomi_kiomi發表於2018-07-27

根據網上搜素的關於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:網路預測資料

相關文章