RBF(徑向基神經網絡)
GRNN廣義神經網絡
PNN概率神經網絡
RBF算例實現(回歸)
數據集
% 1. 導入數據
load spectra_data.mat
NIR輸入,octane輸出
%% I
. 清空環境變量
clear
all
clc
%% II
. 訓練集
/測試集產生
%%
% 1. 導入數據
load spectra_data
.mat
%%
% 2. 隨機產生訓練集和測試集
temp
= randperm
(size
(NIR
,1));
% 訓練集——
50個樣本
P_train
= NIR
(temp
(1:50),:)'
;
T_train
= octane
(temp
(1:50),:)'
;
% 測試集——
10個樣本
P_test
= NIR
(temp
(51:end
),:)'
;
T_test
= octane
(temp
(51:end
),:)'
;
N
= size
(P_test
,2);%% III
. RBF神經網絡創建及仿真測試
%%
% 1. 創建網絡
net
= newrbe
(P_train
,T_train
,30);%30為speend
%%
% 2. 仿真測試
T_sim
= sim
(net
,P_test
);%% IV
. 性能評價
%%
% 1. 相對誤差error
error
= abs(T_sim
- T_test
)./T_test
;%%
% 2. 決定系數R
^2
R2
= (N
* sum(T_sim
.* T_test
) - sum(T_sim
) * sum(T_test
))^2 / ((N
* sum((T_sim
).^2) - (sum(T_sim
))^2) * (N
* sum((T_test
).^2) - (sum(T_test
))^2)); %%
% 3. 結果對比
result
= [T_test
' T_sim' error'
]%% V
. 繪圖
figure
plot
(1:N
,T_test
,'b:*',1:N
,T_sim
,'r-o')
legend
('真實值','預測值')
xlabel
('預測樣本')
ylabel
('辛烷值')
string
= {'測試集辛烷值含量預測結果對比';['R^2=' num2str
(R2
)]};
title
(string
)
GRNN和PNN神經網絡(分類)
數據集:經典案例鳶尾花分類
feature有4維數據:花萼長度,花萼寬度,花瓣長度,花瓣寬度
classes花的種類
‘setosa’, ‘versicolor’, ‘virginica’
%% I
. 清空環境變量
clear
all
clc
%% II
. 訓練集
/測試集產生
%%
% 1. 導入數據
load iris_data
.mat
%%
% 2 隨機產生訓練集和測試集
P_train
= [];
T_train
= [];
P_test
= [];
T_test
= [];
for i
= 1:3temp_input
= features
((i
-1)*50+1:i
*50,:);temp_output
= classes
((i
-1)*50+1:i
*50,:);n
= randperm
(50);% 訓練集——
120個樣本P_train
= [P_train temp_input
(n
(1:40),:)'
];T_train
= [T_train temp_output
(n
(1:40),:)'
];% 測試集——
30個樣本P_test
= [P_test temp_input
(n
(41:50),:)'
];T_test
= [T_test temp_output
(n
(41:50),:)'
];
end
%% III
. 模型建立
result_grnn
= [];
result_pnn
= [];
time_grnn
= [];
time_pnn
= [];
for i
= 1:4for j
= i
:4p_train
= P_train
(i
:j
,:);p_test
= P_test
(i
:j
,:);%% % 1. GRNN創建及仿真測試t
= cputime
;% 創建網絡net_grnn
= newgrnn
(p_train
,T_train
);% 仿真測試t_sim_grnn
= sim
(net_grnn
,p_test
);T_sim_grnn
= round(t_sim_grnn
);%取整操作,因為是分類,目標是整數t
= cputime
- t
;time_grnn
= [time_grnn t
];result_grnn
= [result_grnn T_sim_grnn'
];%%% 2. PNN創建及仿真測試t
= cputime
;Tc_train
= ind2vec
(T_train
);% 創建網絡net_pnn
= newpnn
(p_train
,Tc_train
);% 仿真測試Tc_test
= ind2vec
(T_test
);t_sim_pnn
= sim
(net_pnn
,p_test
);T_sim_pnn
= vec2ind
(t_sim_pnn
);t
= cputime
- t
;time_pnn
= [time_pnn t
];result_pnn
= [result_pnn T_sim_pnn'
];end
end
%% IV
. 性能評價
%%
% 1. 正確率accuracy
accuracy_grnn
= [];
accuracy_pnn
= [];
time
= [];
for i
= 1:10accuracy_1
= length
(find
(result_grnn
(:,i
) == T_test'
))/length
(T_test
);accuracy_2
= length
(find
(result_pnn
(:,i
) == T_test'
))/length
(T_test
);accuracy_grnn
= [accuracy_grnn accuracy_1
];accuracy_pnn
= [accuracy_pnn accuracy_2
];
end
%%
% 2. 結果對比
result
= [T_test' result_grnn result_pnn
]
accuracy
= [accuracy_grnn
;accuracy_pnn
]
time
= [time_grnn
;time_pnn
]%% V
. 繪圖
figure
(1)
plot
(1:30,T_test
,'bo',1:30,result_grnn
(:,4),'r-*',1:30,result_pnn
(:,4),'k:^')
grid on
xlabel
('測試集樣本編號')
ylabel
('測試集樣本類別')
string
= {'測試集預測結果對比(GRNN vs PNN)';['正確率:' num2str
(accuracy_grnn
(4)*100) '%(GRNN) vs ' num2str
(accuracy_pnn
(4)*100) '%(PNN)']};
title
(string
)
legend
('真實值','GRNN預測值','PNN預測值')
figure
(2)
plot
(1:10,accuracy
(1,:),'r-*',1:10,accuracy
(2,:),'b:o')
grid on
xlabel
('模型編號')
ylabel
('測試集正確率')
title
('10個模型的測試集正確率對比(GRNN vs PNN)')
legend
('GRNN','PNN')
figure
(3)
plot
(1:10,time
(1,:),'r-*',1:10,time
(2,:),'b:o')
grid on
xlabel
('模型編號')
ylabel
('運行時間(s)')
title
('10個模型的運行時間對比(GRNN vs PNN)')
legend
('GRNN','PNN')
代碼解析:
因為花有三種,所以需要分段劃分
for i
= 1:3temp_input
= features
((i
-1)*50+1:i
*50,:);temp_output
= classes
((i
-1)*50+1:i
*50,:);n
= randperm
(50);% 訓練集——
120個樣本P_train
= [P_train temp_input
(n
(1:40),:)'
];T_train
= [T_train temp_output
(n
(1:40),:)'
];% 測試集——
30個樣本P_test
= [P_test temp_input
(n
(41:50),:)'
];T_test
= [T_test temp_output
(n
(41:50),:)'
];
end
因為花有四個特征,我們將兩兩特征組合
for i
= 1:4for j
= i
:4p_train
= P_train
(i
:j
,:);p_test
= P_test
(i
:j
,:);
代碼和數據百度云
鏈接:https
://pan
.baidu
.com
/s
/1Z1txLCFJ_Iif_skcb57PiQ
提取碼:yn6c
復制這段內容后打開百度網盤手機App,操作更方便哦
作者:電氣工程計算機萌新:余登武
總結
以上是生活随笔為你收集整理的MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。