《MATLAB智能算法30个案例》:第25章 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测
《MATLAB智能算法30個案例》:第25章 有導師學習神經網絡的回歸擬合——基于近紅外光譜的汽油辛烷值預測
- 1. 前言
- 2. MATLAB 仿真示例
- 3. 小結
1. 前言
《MATLAB智能算法30個案例分析》是2011年7月1日由北京航空航天大學出版社出版的圖書,作者是郁磊、史峰、王輝、胡斐。本書案例是各位作者多年從事算法研究的經驗總結。書中所有案例均因國內各大MATLAB技術論壇網友的切身需求而精心設計,其中不少案例所涉及的內容和求解方法在國內現已出版的MATLAB書籍中鮮有介紹。《MATLAB智能算法30個案例分析》采用案例形式,以智能算法為主線,講解了遺傳算法、免疫算法、退火算法、粒子群算法、魚群算法、蟻群算法和神經網絡算法等最常用的智能算法的MATLAB實現。
本書共給出30個案例,每個案例都是一個使用智能算法解決問題的具體實例,所有案例均由理論講解、案例背景、MATLAB程序實現和擴展閱讀四個部分組成,并配有完整的原創程序,使讀者在掌握算法的同時更能快速提高使用算法求解實際問題的能力。《MATLAB智能算法30個案例分析》可作為本科畢業設計、研究生項目設計、博士低年級課題設計參考書籍,同時對廣大科研人員也有很高的參考價值。
《MATLAB智能算法30個案例分析》與《MATLAB 神經網絡43個案例分析》一樣,都是由北京航空航天大學出版社出版,其中的智能算法應該是屬于神經網絡興起之前的智能預測分類算法的熱門領域,在數字信號處理,如圖像和語音相關方面應用較為廣泛。本系列文章結合MATLAB與實際案例進行仿真復現,有不少自己在研究生期間與工作后的學習中有過相關學習應用,這次復現仿真示例進行學習,希望可以溫故知新,加強并提升自己在智能算法方面的理解與實踐。下面開始進行仿真示例,主要以介紹各章節中源碼應用示例為主,本文主要基于MATLAB2015b(32位)平臺仿真實現,這是本書第二十五章有導師學習神經網絡的回歸擬合——基于近紅外光譜的汽油辛烷值預測實例,話不多說,開始!
2. MATLAB 仿真示例
打開MATLAB,點擊“主頁”,點擊“打開”,找到示例文件
選中main.m,點擊“打開”
main.m源碼如下:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %功能:有導師學習神經網絡的回歸擬合——基于近紅外光譜的汽油辛烷值預測示例 %環境:Win7,Matlab2015b %Modi: C.S %時間:2022-07-09 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% 清空環境 clc clear all close alltic%% 第25章 有導師學習神經網絡的回歸擬合——基于近紅外光譜的汽油辛烷值預測 % <html> % <table border="0" width="600px" id="table1"> <tr> <td><b><font size="2">該案例作者申明:</font></b></td> </tr> <tr><td><span class="comment"><font size="2">1:本人長期駐扎在此<a target="_blank" href="http://www.matlabsky.com/forum-78-1.html"><font color="#0000FF">板塊</font></a>里,對該案例提問,做到有問必答。</font></span></td></tr><tr> <td><span class="comment"><font size="2">2</font><font size="2">:此案例有配套的教學視頻,視頻下載請點擊<a href="http://www.matlabsky.com/forum-91-1.html">http://www.matlabsky.com/forum-91-1.html</a></font><font size="2">。 </font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 3:此案例為原創案例,轉載請注明出處(《MATLAB智能算法30個案例分析》)。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 4:若此案例碰巧與您的研究有關聯,我們歡迎您提意見,要求等,我們考慮后可以加在案例里。</font></span></td> </tr> <tr> <td><span class="comment"><font size="2"> 5:以下內容為初稿,與實際發行的書籍內容略有出入,請以書籍中的內容為準。</font></span></td> </tr> </table> % </html> %% 訓練集/測試集產生 load spectra_data.mat % 隨機產生訓練集和測試集 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);%% BP神經網絡創建、訓練及仿真測試% 創建網絡 net = newff(P_train,T_train,9); % 設置訓練參數 net.trainParam.epochs = 1000; net.trainParam.goal = 1e-3; net.trainParam.lr = 0.01; % 訓練網絡 net = train(net,P_train,T_train); % 仿真測試 T_sim_bp = sim(net,P_test);%% RBF神經網絡創建及仿真測試% 創建網絡 net = newrbe(P_train,T_train,0.3); % 仿真測試 T_sim_rbf = sim(net,P_test);%% 性能評價% 相對誤差error error_bp = abs(T_sim_bp - T_test)./T_test; error_rbf = abs(T_sim_rbf - T_test)./T_test; % 決定系數R^2 R2_bp = (N * sum(T_sim_bp .* T_test) - sum(T_sim_bp) * sum(T_test))^2 / ((N * sum((T_sim_bp).^2) - (sum(T_sim_bp))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); R2_rbf = (N * sum(T_sim_rbf .* T_test) - sum(T_sim_rbf) * sum(T_test))^2 / ((N * sum((T_sim_rbf).^2) - (sum(T_sim_rbf))^2) * (N * sum((T_test).^2) - (sum(T_test))^2)); % 結果對比 result_bp = [T_test' T_sim_bp' T_sim_rbf' error_bp' error_rbf']%% 繪圖 figure plot(1:N,T_test,'b:*',1:N,T_sim_bp,'r-o',1:N,T_sim_rbf,'k-.^') legend('真實值','BP預測值','RBF預測值') xlabel('預測樣本') ylabel('辛烷值') string = {'測試集辛烷值含量預測結果對比(BP vs RBF)';['R^2=' num2str(R2_bp) '(BP)' ' R^2=' num2str(R2_rbf) '(RBF)']}; title(string) toc %% % <html> % <table width="656" align="left" > <tr><td align="center"><p align="left"><font size="2">相關論壇:</font></p><p align="left"><font size="2">Matlab技術論壇:<a href="http://www.matlabsky.com">www.matlabsky.com</a></font></p><p align="left"><font size="2">M</font><font size="2">atlab函數百科:<a href="http://www.mfun.la">www.mfun.la</a></font></p></td> </tr></table> % </html>添加完畢,點擊“運行”,開始仿真,輸出仿真結果如下:
result_bp =85.5000 86.5046 85.0580 0.0117 0.005288.6500 88.1165 88.7372 0.0060 0.001088.7500 88.1484 85.4607 0.0068 0.037188.1000 88.2871 88.8072 0.0021 0.008085.3000 85.6649 86.0680 0.0043 0.009087.3000 87.7320 87.6422 0.0049 0.003987.0000 86.8574 86.6992 0.0016 0.003586.8500 86.7348 86.5806 0.0013 0.003188.3500 88.3513 88.1100 0.0000 0.002788.5500 88.7175 83.7434 0.0019 0.0543時間已過 6.732558 秒。
分別點擊Performance,Training State,Regression可得如下圖示:
3. 小結
神經網絡的學習規則又稱神經網絡的訓練算法,用來計算更新神經網絡的權值和閾值。學習規則有兩大類別;有導師學習和無導師學習。在有導師學習中,需要為學習規則提供一系列正確的網絡輸入/輸出對(即訓練樣本),當網絡輸人時,將網絡輸出與相對應的期望值進行比較﹐然后應用學習規則調整權值和閾值,使網絡的輸出接近于期望值。而在無導師學習中,權值和閾值的調整只與網絡輸人有關系,沒有期望值﹐這類算法大多用聚類法,將輸人模式歸類于有限的類別。對本章內容感興趣或者想充分學習了解的,建議去研習書中第二十五章節的內容。后期會對其中一些知識點在自己理解的基礎上進行補充,歡迎大家一起學習交流。
總結
以上是生活随笔為你收集整理的《MATLAB智能算法30个案例》:第25章 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用动态代理实现用AOP对数据库进行操作
- 下一篇: Object类型转为Integer类型