数据预测之BP神经网络具体应用以及matlab实现
1.具體應(yīng)用實(shí)例。根據(jù)表2,預(yù)測(cè)序號(hào)15的跳高成績(jī)。
表2?國(guó)內(nèi)男子跳高運(yùn)動(dòng)員各項(xiàng)素質(zhì)指標(biāo)
| 序號(hào) | 跳高成績(jī)() | 30行進(jìn)跑(s) | 立定三級(jí)跳遠(yuǎn)() | 助跑摸高() | 助跑4—6步跳高() | 負(fù)重深蹲杠鈴() | 杠鈴半蹲系數(shù) | 100 (s) | 抓舉 () |
| ?????1 | 2.24 | 3.2 | 9.6 | 3.45 | 2.15 | 140 | 2.8 | 11.0 | 50 |
| 2 | 2.33 | 3.2 | 10.3 | 3.75 | 2.2 | 120 | 3.4 | 10.9 | 70 |
| 3 | 2.24 | 3.0 | 9.0 | 3.5 | 2.2 | 140 | 3.5 | 11.4 | 50 |
| 4 | 2.32 | 3.2 | 10.3 | 3.65 | 2.2 | 150 | 2.8 | 10.8 | 80 |
| 5 | 2.2 | 3.2 | 10.1 | 3.5 | 2 | 80 | 1.5 | 11.3 | 50 |
| 6 | 2.27 | 3.4 | 10.0 | 3.4 | 2.15 | 130 | 3.2 | 11.5 | 60 |
| 7 | 2.2 | 3.2 | 9.6 | 3.55 | 2.1 | 130 | 3.5 | 11.8 | 65 |
| 8 | 2.26 | 3.0 | 9.0 | 3.5 | 2.1 | 100 | 1.8 | 11.3 | 40 |
| 9 | 2.2 | 3.2 | 9.6 | 3.55 | 2.1 | 130 | 3.5 | 11.8 | 65 |
| 10 | 2.24 | 3.2 | 9.2 | 3.5 | 2.1 | 140 | 2.5 | 11.0 | 50 |
| 11 | 2.24 | 3.2 | 9.5 | 3.4 | 2.15 | 115 | 2.8 | 11.9 | 50 |
| 12 | 2.2 | 3.9 | 9.0 | 3.1 | 2.0 | 80 | 2.2 | 13.0 | 50 |
| 13 | 2.2 | 3.1 | 9.5 | 3.6 | 2.1 | 90 | 2.7 | 11.1 | 70 |
| 14 | 2.35 | 3.2 | 9.7 | 3.45 | 2.15 | 130 | 4.6 | 10.85 | 70 |
| 15 | ? | 3.0 | 9.3 | 3.3 | 2.05 | 100 | 2.8 | 11.2 | 50 |
?
4.4?(序號(hào)15)跳高成績(jī)預(yù)測(cè)
4.4.1?數(shù)據(jù)整理
1)我們將前14組國(guó)內(nèi)男子跳高運(yùn)動(dòng)員各項(xiàng)素質(zhì)指標(biāo)作為輸入,即(30m行進(jìn)跑,立定三級(jí)跳遠(yuǎn),助跑摸高,助跑4-6步跳高,負(fù)重深蹲杠鈴,杠鈴半蹲系數(shù),100m,抓舉),將對(duì)應(yīng)的跳高成績(jī)作為輸出。并用matlab自帶的premnmx()函數(shù)將這些數(shù)據(jù)歸一化處理。
數(shù)據(jù)集:(注意:每一列是一組輸入訓(xùn)練集,行數(shù)代表輸入層神經(jīng)元個(gè)數(shù),列數(shù)輸入訓(xùn)練集組數(shù))
P=[3.2?3.2?3?3.2?3.2?3.4?3.2?3?3.2?3.2?3.2?3.9?3.1?3.2;
9.6?10.3?9?10.3?10.1?10?9.6?9?9.6?9.2?9.5?9?9.5?9.7;
3.45?3.75?3.5?3.65?3.5?3.4?3.55?3.5?3.55?3.5?3.4?3.1?3.6?3.45;
2.15?2.2?2.2?2.2?2?2.15?2.14?2.1?2.1?2.1?2.15?2?2.1?2.15;
140?120?140?150?80?130?130?100?130?140?115?80?90?130;
2.8?3.4?3.5?2.8?1.5?3.2?3.5?1.8?3.5?2.5?2.8?2.2?2.7?4.6;
11?10.9?11.4?10.8?11.3?11.5?11.8?11.3?11.8?11?11.9?13?11.1?10.85;
50?70?50?80?50?60?65?40?65?50?50?50?70?70];
T=[2.24?2.33?2.24?2.32?2.2?2.27?2.2?2.26?2.2?2.24?2.24?2.2?2.2?2.35];
4.4.2?模型建立
4.4.2.1?BP網(wǎng)絡(luò)模型
????BP網(wǎng)絡(luò)(Back-ProPagation?Network)又稱(chēng)反向傳播神經(jīng)網(wǎng)絡(luò),?通過(guò)樣本數(shù)據(jù)的訓(xùn)練,不斷修正網(wǎng)絡(luò)權(quán)值和閾值使誤差函數(shù)沿負(fù)梯度方向下降,逼近期望輸出。它是一種應(yīng)用較為廣泛的神經(jīng)網(wǎng)絡(luò)模型,多用于函數(shù)逼近、模型識(shí)別分類(lèi)、數(shù)據(jù)壓縮和時(shí)間序列預(yù)測(cè)等。
?
BP網(wǎng)絡(luò)由輸入層、隱層和輸出層組成,隱層可以有一層或多層,圖2是m×k×n的三層BP網(wǎng)絡(luò)模型,網(wǎng)絡(luò)選用S型傳遞函數(shù),?通過(guò)反傳誤差函數(shù)??(Ti為期望輸出、Oi為網(wǎng)絡(luò)的計(jì)算輸出),不斷調(diào)節(jié)網(wǎng)絡(luò)權(quán)值和閾值使誤差函數(shù)E達(dá)到極小。
BP網(wǎng)絡(luò)具有高度非線(xiàn)性和較強(qiáng)的泛化能力,但也存在收斂速度慢、迭代步數(shù)多、易于陷入局部極小和全局搜索能力差等缺點(diǎn)。可以先用遺傳算法對(duì)“BP網(wǎng)絡(luò)”進(jìn)行優(yōu)化在解析空間找出較好的搜索空間,再用BP網(wǎng)絡(luò)在較小的搜索空間內(nèi)搜索最優(yōu)解。
4.4.2.2?模型求解?
4.4.2.2.1?網(wǎng)絡(luò)結(jié)構(gòu)設(shè)計(jì)
1)?輸入輸出層的設(shè)計(jì)
該模型由每組數(shù)據(jù)的各項(xiàng)素質(zhì)指標(biāo)作為輸入,以跳高成績(jī)作為輸出,所以輸入層的節(jié)點(diǎn)數(shù)為8,輸出層的節(jié)點(diǎn)數(shù)為1。
2)?隱層設(shè)計(jì)
有關(guān)研究表明,?有一個(gè)隱層的神經(jīng)網(wǎng)絡(luò),?只要隱節(jié)點(diǎn)足夠多,?就可以以任意精度逼近一個(gè)非線(xiàn)性函數(shù)。因此,?本文采用含有一個(gè)隱層的三層多輸入單輸出的BP網(wǎng)絡(luò)建立預(yù)測(cè)模型。在網(wǎng)絡(luò)設(shè)計(jì)過(guò)程中,?隱層神經(jīng)元數(shù)的確定十分重要。隱層神經(jīng)元個(gè)數(shù)過(guò)多,?會(huì)加大網(wǎng)絡(luò)計(jì)算量并容易產(chǎn)生過(guò)度擬合問(wèn)題;?神經(jīng)元個(gè)數(shù)過(guò)少,?則會(huì)影響網(wǎng)絡(luò)性能,?達(dá)不到預(yù)期效果。網(wǎng)絡(luò)中隱層神經(jīng)元的數(shù)目與實(shí)際問(wèn)題的復(fù)雜程度、輸入和輸出層的神經(jīng)元數(shù)以及對(duì)期望誤差的設(shè)定有著直接的聯(lián)系。目前,?對(duì)于隱層中神經(jīng)元數(shù)目的確定并沒(méi)有明確的公式,?只有一些經(jīng)驗(yàn)公式,?神經(jīng)元個(gè)數(shù)的最終確定還是需要根據(jù)經(jīng)驗(yàn)和多次實(shí)驗(yàn)來(lái)確定。本文在選取隱層神經(jīng)元個(gè)數(shù)的問(wèn)題上參照了以下的經(jīng)驗(yàn)公式:
其中,?n為輸入層神經(jīng)元個(gè)數(shù),?m?為輸出層神經(jīng)元個(gè)數(shù),?a?為[?1,?10]之間的常數(shù)。?
根據(jù)上式可以計(jì)算出神經(jīng)元個(gè)數(shù)為4-13個(gè)之間,在本次實(shí)驗(yàn)中選擇隱層神經(jīng)元個(gè)數(shù)為6.
網(wǎng)絡(luò)結(jié)構(gòu)示意圖如下:
?
4.4.2.2.2?激勵(lì)函數(shù)的選取
BP神經(jīng)網(wǎng)絡(luò)通常采用Sigmoid可微函數(shù)和線(xiàn)性函數(shù)作為網(wǎng)絡(luò)的激勵(lì)函數(shù)。本文選擇S型正切函數(shù)tansig作為隱層神經(jīng)元的激勵(lì)函數(shù)。而由于網(wǎng)絡(luò)的輸出歸一到[?-1,?1]范圍內(nèi),?因此預(yù)測(cè)模型選取S?型對(duì)數(shù)函數(shù)tansig作為輸出層神經(jīng)元的激勵(lì)函數(shù)。
4.4.2.2.3?模型的實(shí)現(xiàn)
此次預(yù)測(cè)選用MATLAB中的神經(jīng)網(wǎng)絡(luò)工具箱進(jìn)行網(wǎng)絡(luò)的訓(xùn)練,?預(yù)測(cè)模型的具體實(shí)現(xiàn)步驟如下:
將訓(xùn)練樣本數(shù)據(jù)歸一化后輸入網(wǎng)絡(luò),?設(shè)定網(wǎng)絡(luò)隱層和輸出層激勵(lì)函數(shù)分別為tansig和logsig函數(shù),?網(wǎng)絡(luò)訓(xùn)練函數(shù)為traingdx,?網(wǎng)絡(luò)性能函數(shù)為mse,隱層神經(jīng)元數(shù)初設(shè)為6。設(shè)定網(wǎng)絡(luò)參數(shù)。網(wǎng)絡(luò)迭代次數(shù)epochs為5000次,?期望誤差goal為0.00000001,?學(xué)習(xí)速率lr為0.?01。設(shè)定完參數(shù)后,?開(kāi)始訓(xùn)練網(wǎng)絡(luò)。
該網(wǎng)絡(luò)通過(guò)24次重復(fù)學(xué)習(xí)達(dá)到期望誤差后則完成學(xué)習(xí)。詳細(xì)代碼見(jiàn)附錄。
網(wǎng)絡(luò)訓(xùn)練完成后,只需要將各項(xiàng)素質(zhì)指標(biāo)輸入網(wǎng)絡(luò)即可得到預(yù)測(cè)數(shù)據(jù)。
預(yù)測(cè)結(jié)果為:2.20
?
matlab代碼:
P=[3.2 3.2 3 3.2 3.2 3.4 3.2 3 3.2 3.2 3.2 3.9 3.1 3.2; 9.6 10.3 9 10.3 10.1 10 9.6 9 9.6 9.2 9.5 9 9.5 9.7; 3.45 3.75 3.5 3.65 3.5 3.4 3.55 3.5 3.55 3.5 3.4 3.1 3.6 3.45; 2.15 2.2 2.2 2.2 2 2.15 2.14 2.1 2.1 2.1 2.15 2 2.1 2.15; 140 120 140 150 80 130 130 100 130 140 115 80 90 130; 2.8 3.4 3.5 2.8 1.5 3.2 3.5 1.8 3.5 2.5 2.8 2.2 2.7 4.6; 11 10.9 11.4 10.8 11.3 11.5 11.8 11.3 11.8 11 11.9 13 11.1 10.85; 50 70 50 80 50 60 65 40 65 50 50 50 70 70]; T=[2.24 2.33 2.24 2.32 2.2 2.27 2.2 2.26 2.2 2.24 2.24 2.2 2.2 2.35]; [p1,minp,maxp,t1,mint,maxt]=premnmx(P,T); %創(chuàng)建網(wǎng)絡(luò) net=newff(minmax(P),[8,6,1],{'tansig','tansig','purelin'},'trainlm'); %設(shè)置訓(xùn)練次數(shù) net.trainParam.epochs = 5000; %設(shè)置收斂誤差 net.trainParam.goal=0.0000001; %訓(xùn)練網(wǎng)絡(luò) [net,tr]=train(net,p1,t1); %輸入數(shù)據(jù) a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50]; %將輸入數(shù)據(jù)歸一化 a=premnmx(a); %放入到網(wǎng)絡(luò)輸出數(shù)據(jù) b=sim(net,a); %將得到的數(shù)據(jù)反歸一化得到預(yù)測(cè)數(shù)據(jù) c=postmnmx(b,mint,maxt)最后輸出結(jié)果:c=2.2000
?
//
轉(zhuǎn)載:https://www.cnblogs.com/sallybin/p/3169572.html
總結(jié)
以上是生活随笔為你收集整理的数据预测之BP神经网络具体应用以及matlab实现的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 图论基础知识--最小生成树算法krusk
- 下一篇: 决策树算法及可视化