您好,登錄后才能下訂單哦!
這篇文章主要介紹“Matlab怎么實現時間序列預測分類”,在日常操作中,相信很多人在Matlab怎么實現時間序列預測分類問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Matlab怎么實現時間序列預測分類”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
一、數據準備
二、時間序列預測分類
1、輸入為xt,輸出是yt
2、有x值,有y值:NARX
(1)選擇模型類型
(2)選擇輸出,只有y_t
(3)選擇70%用來作為訓練數據,15%用來作為驗證使用,15%用來測試
(4)選擇delay
(5)開始訓練
(6)得到參數
(7)將神經網絡導出代碼
3、無x,有y值:NAR
三、總結
Matlab從2010b版本以后,神經網絡工具箱已經升級為7.0,功能大大加強。在之前的版本做時間預測是比較麻煩操作的,MathWorks公司對時間序列預測做了詳細的解決,跑模型非常簡便。
下面通過一個例子演示在Matlab實現時間序列預測。
極客范兒在夏天吹電扇的體溫變化
時間 | 風速 | 溫度 |
---|---|---|
0 | 1 | 37.21405 |
0.12457 | 1.01 | 37.26016 |
0.24915 | 1.02 | 37.26324 |
0.37373 | 1.03 | 37.31242 |
0.4983 | 1.04 | 37.3155 |
0.62258 | 1.05 | 37.36468 |
0.74745 | 1.06 | 37.36776 |
0.87203 | 1.07 | 37.41694 |
0.99661 | 1.08 | 37.42002 |
… | … | … |
% 原始數據讀入到Matlab中 rawData=xlsread('time_series_data.xlsx','sheet1','A2:C52); % 第一列時間,第二列風速,第三列溫度 % yt第三列 y_t=rawData(:,3); % xt第二列 x_t=rawData(:,2);
時間序列預測分為三類:
即有過去的輸入xt,也有過去的輸出yt,同時當前的輸出不僅依賴于過去的輸入,也同時依賴于過去的輸出
過去時間段溫度的變化,預測將來某個時間溫度的變化,這種情況就是只有過去的輸出
% x_t - 時間序列輸入 % y_t - 反饋時間序列 X = tonndata(x_t,false,false); T = tonndata(y_t,false,false); % 選擇訓練功能 % 'trainlm'通常是最快 % 'trainbr'耗時較長,但可能更適合解決挑戰性的問題 % 'trainscg'使用更少的內存。適用于低內存情況 trainFcn = 'trainlm'; % Levenberg-Marquardt反向傳播 % 創建一個非線性自回歸網絡 feedbackDelays = 1:6; hiddenLayerSize = 20; net = narnet(feedbackDelays,hiddenLayerSize,'open',trainFcn); % 為訓練和模擬準備數據 % PREPARETS函數為特定網絡準備時間序列數據 % 移動時間的最小量,以聲明填充輸入狀態和層 % 使用PREPARETS允許保留原始的時間序列數據不變,同時輕松定制它的網絡與不同 % 具有開環或閉環反饋模式的延遲數 [x,xi,ai,t] = preparets(net,{},{},T); % 建立訓練,驗證,測試的數據 net.divideParam.trainRatio = 70/100; net.divideParam.valRatio = 15/100; net.divideParam.testRatio = 15/100; % 訓練靜態神經網絡 [net,tr] = train(net,x,t,xi,ai); % 測試神經網絡 y = net(x,xi,ai); e = gsubtract(t,y); performance = perform(net,t,y) % 查看神經網絡 view(net) % Plots % Uncomment these lines to enable various plots. %figure, plotperform(tr) %figure, plottrainstate(tr) %figure, ploterrhist(e) %figure, plotregression(t,y) %figure, plotresponse(t,y) %figure, ploterrcorr(e) %figure, plotinerrcorr(x,e) % 提前預測網絡 % 利用該網絡進行多步預測 % CLOSELOOP函數將反饋輸入替換為直接輸入 % 從外部層連接 nets = removedelay(net); nets.name = [net.name ' - Predict One Step Ahead']; view(netc) [xs,xis,ais,ts] = preparets(nets,X,{},T); ys = nets(xs,xis,ais); stepAheadPerformance = perform(nets,ts,ys)
只有過去的輸出
如果給環境加一個風扇,這時候有了風速,過去時間風速在改變,同時也在影響溫度的改變
Matlab現在提供時間序列預測工具箱,可以在圖形界面上進行調參選擇,使用命令ntstool
打開時間序列預測工具箱
類似股票的模型,只知道早上9:30開市到11:30的股票行情,預測11:30之后的股票行情,不考慮任何的輸入
沒有線性的輸入輸出,很少遇到這種情況
Matlab從2010b版本以后,使用圖形界面訓練網絡調參,生成的代碼與手敲的功能無異,Matlab時間序列預測工具箱實用而且好用。
到此,關于“Matlab怎么實現時間序列預測分類”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。