1.具體應用實例。根據表2,預測序號15的跳高成績。
表2 國內男子跳高運動員各項素質指標
序號 |
跳高成績() |
30行進跑(s) |
立定三級跳遠() |
助跑摸高() |
助跑4—6步跳高() |
負重深蹲杠鈴() |
杠鈴半蹲系數 |
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 (序號15)跳高成績預測
4.4.1 數據整理
1)我們將前14組國內男子跳高運動員各項素質指標作為輸入,即(30m行進跑,立定三級跳遠,助跑摸高,助跑4-6步跳高,負重深蹲杠鈴,杠鈴半蹲系數,100m,抓舉),將對應的跳高成績作為輸出。並用matlab自帶的premnmx()函數將這些數據歸一化處理。
數據集:(注意:每一列是一組輸入訓練集,行數代表輸入層神經元個數,列數輸入訓練集組數)
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網絡模型
BP網絡(Back-ProPagation Network)又稱反向傳播神經網絡, 通過樣本數據的訓練,不斷修正網絡權值和閾值使誤差函數沿負梯度方向下降,逼近期望輸出。它是一種應用較為廣泛的神經網絡模型,多用於函數逼近、模型識別分類、數據壓縮和時間序列預測等。
BP網絡由輸入層、隱層和輸出層組成,隱層可以有一層或多層,圖2是m×k×n的三層BP網絡模型,網絡選用S型傳遞函數, 通過反傳誤差函數
( (Ti為期望輸出、Oi為網絡的計算輸出),不斷調節網絡權值和閾值使誤差函數E達到極小。
BP網絡具有高度非線性和較強的泛化能力,但也存在收斂速度慢、迭代步數多、易於陷入局部極小和全局搜索能力差等缺點。可以先用遺傳算法對“BP網絡”進行優化在解析空間找出較好的搜索空間,再用BP網絡在較小的搜索空間內搜索最優解。
4.4.2.2 模型求解
4.4.2.2.1 網絡結構設計
1) 輸入輸出層的設計
該模型由每組數據的各項素質指標作為輸入,以跳高成績作為輸出,所以輸入層的節點數為8,輸出層的節點數為1。
2) 隱層設計
有關研究表明, 有一個隱層的神經網絡, 只要隱節點足夠多, 就可以以任意精度逼近一個非線性函數。因此, 本文采用含有一個隱層的三層多輸入單輸出的BP網絡建立預測模型。在網絡設計過程中, 隱層神經元數的確定十分重要。隱層神經元個數過多, 會加大網絡計算量並容易產生過度擬合問題; 神經元個數過少, 則會影響網絡性能, 達不到預期效果。網絡中隱層神經元的數目與實際問題的復雜程度、輸入和輸出層的神經元數以及對期望誤差的設定有着直接的聯系。目前, 對於隱層中神經元數目的確定並沒有明確的公式, 只有一些經驗公式, 神經元個數的最終確定還是需要根據經驗和多次實驗來確定。本文在選取隱層神經元個數的問題上參照了以下的經驗公式:
其中, n為輸入層神經元個數, m 為輸出層神經元個數, a 為[ 1, 10]之間的常數。
根據上式可以計算出神經元個數為4-13個之間,在本次實驗中選擇隱層神經元個數為6.
網絡結構示意圖如下:
4.4.2.2.2 激勵函數的選取
BP神經網絡通常采用Sigmoid可微函數和線性函數作為網絡的激勵函數。本文選擇S型正切函數tansig作為隱層神經元的激勵函數。而由於網絡的輸出歸一到[ -1, 1]范圍內, 因此預測模型選取S 型對數函數tansig作為輸出層神經元的激勵函數。
4.4.2.2.3 模型的實現
此次預測選用MATLAB中的神經網絡工具箱進行網絡的訓練, 預測模型的具體實現步驟如下:
將訓練樣本數據歸一化后輸入網絡, 設定網絡隱層和輸出層激勵函數分別為tansig和logsig函數, 網絡訓練函數為traingdx, 網絡性能函數為mse,隱層神經元數初設為6。設定網絡參數。網絡迭代次數epochs為5000次, 期望誤差goal為0.00000001, 學習速率lr為0. 01。設定完參數后, 開始訓練網絡。
該網絡通過24次重復學習達到期望誤差后則完成學習。詳細代碼見附錄。
網絡訓練完成后,只需要將各項素質指標輸入網絡即可得到預測數據。
預測結果為:2.20
matlab代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
?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);
?%創建網絡
?net=newff(minmax(P),[8,6,1],{
'tansig'
,
'tansig'
,
'purelin'
},
'trainlm'
);
?%設置訓練次數
?net.trainParam.epochs = 5000;
?%設置收斂誤差
?net.trainParam.goal=0.0000001;
?%訓練網絡
?[net,tr]=train(net,p1,t1);
TRAINLM, Epoch 0/5000, MSE 0.533351/1e-007, Gradient 18.9079/1e-010
TRAINLM, Epoch 24/5000, MSE 8.81926e-008/1e-007, Gradient 0.0022922/1e-010
TRAINLM, Performance goal met.
?%輸入數據
?a=[3.0;9.3;3.3;2.05;100;2.8;11.2;50];
?%將輸入數據歸一化
?a=premnmx(a);
?%放入到網絡輸出數據
?b=sim(net,a);
?%將得到的數據反歸一化得到預測數據
?c=postmnmx(b,mint,maxt);
?c
c =
2.2003
|
https://www.cnblogs.com/sallybin/p/3169572.html轉自