日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码

發布時間:2024/9/30 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 MATLAB机器学习系列-5 RBF、GRNN和PNN神经网络原理及其例子代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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神经网络原理及其例子代码的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。