详细BP神经网络预测算法及实现过程实例
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转自
详细BP神经网络预测算法及实现过程实例的更多相关文章
- BP神经网络反向传播之计算过程分解(详细版)
摘要:本文先从梯度下降法的理论推导开始,说明梯度下降法为什么能够求得函数的局部极小值.通过两个小例子,说明梯度下降法求解极限值实现过程.在通过分解BP神经网络,详细说明梯度下降法在神经网络的运算过程, ...
- Matlab实现BP神经网络预测(附实例数据及代码)
BP神经网络介绍 神经网络是机器学习中一种常见的数学模型,通过构建类似于大脑神经突触联接的结构,来进行信息处理.在应用神经网络的过程中,处理信息的单元一般分为三类:输入单元.输出单元和隐含单元. 顾名 ...
- 利用BP神经网络预测水道浅滩演变
论文 <基于现代技术的河道浅滩演变研究> 利用BP神经网络来预测浅滩演变 BP输出因子:浅滩的年平均淤积厚度以及浅滩上最小水深,是反映浅滩变化的两个基本指标,是确定浅滩航道尺度能否满足航行 ...
- BP神经网络及其算法优化
大致原理和一种优化的方案,如下图,公式打字太麻烦,于是用手搞定.
- 简单三层BP神经网络学习算法的推导
博客园不支持数学公式orz,我也很绝望啊!
- R_Studio(神经网络)BP神经网络算法预测销量的高低
BP神经网络 百度百科:传送门 BP(back propagation)神经网络:一种按照误差逆向传播算法训练的多层前馈神经网络,是目前应用最广泛的神经网络 #设置文件工作区间 setwd('D:\\ ...
- MATLAB神经网络(2) BP神经网络的非线性系统建模——非线性函数拟合
2.1 案例背景 在工程应用中经常会遇到一些复杂的非线性系统,这些系统状态方程复杂,难以用数学方法准确建模.在这种情况下,可以建立BP神经网络表达这些非线性系统.该方法把未知系统看成是一个黑箱,首先用 ...
- MATLAB神经网络(1) BP神经网络的数据分类——语音特征信号分类
1.1 案例背景 1.1.1 BP神经网络概述 BP神经网络是一种多层前馈神经网络,该网络的主要特点是信号前向传递,误差反向传播.在前向传递中,输入信号从输入层经隐含层逐层处理,直至输出层.每一层的神 ...
- BP神经网络算法预测销量高低
理论以前写过:https://www.cnblogs.com/fangxiaoqi/p/11306545.html,这里根据天气.是否周末.有无促销的情况,来预测销量情况. function [ ma ...
随机推荐
- ualias命令详解
基础命令学习目录首页 原文链接:https://blog.csdn.net/yexiangcsdn/article/details/82782667 个人分类: Linux Command 所属专栏: ...
- Class 1
“在最艰苦的时候,就是你离成功最近的时候”,让暴风雨来得更猛烈些吧. 健身教练/学员,买的那本Java Web还是那么新,显然假期偷懒了,只能一点一点的补回来了.一个假期没有打开过自己的脑洞,真心醉了 ...
- Scapy之ARP询问
引言 校园网中,有同学遭受永恒之蓝攻击,但是被杀毒软件查下,并知道了攻击者的ip也是校园网.所以我想看一下,这个ip是PC,还是路由器. 在ip视角,路由器和pc没什么差别. 实现 首先是构造arp报 ...
- 26_多线程_第26天(Thread、线程创建、线程池)_讲义
今日内容介绍 1.多线程 2.线程池 01进程概念 A:进程概念 a:进程:进程指正在运行的程序.确切的来说,当一个程序进入内存运行, 即变成一个进程,进程是处于运行过程中的程序,并且具有一定独立功能 ...
- 09_Java面向对象_第9天(类、封装)_讲义
今日内容介绍 1.面向对象思想 2.类与对象的关系 3.局部变量和成员变量的关系 4.封装思想 5.private,this关键字 6.随机点名器 01面向对象和面向过程的思想 A: 面向过程与面向对 ...
- awk4.0对数组value排序
有朋友问了一个问题,要求对下面这段文本进行处理: http://www.baidu.com/2.html http://www.baidu.com/2.html http://www.baidu.co ...
- js异步上传图片
<!DOCTYPE html><html xmlns = "http://www.w3.org/1999/xhtml" ><head><m ...
- 事件ID:7026(“下列引导或系统启动驱动程序无法加载: cdrom”)的解决方法
电脑没有安装光驱,而是使用USB光驱/虚拟光驱软件,每次开机后"事件查看器"都显示错误:"下列引导或系统启动驱动程序无法加载: cdrom"(事件ID:7 ...
- MSTSC 修改端口的简单方法 3389
1. 3389端口太过危险 最简单的办法是 修改默认端口方法非常简单. 2. win+r 打开运行, 输入 regedit 打开 注册表 3. 在地址栏输入 远程的服务的路径 输入的内容为: 计算机 ...
- Vue 小组件input keyup.enter绑定
<div id="todo-list-example"> <input v-model="newTodoText" v-on:keyup.en ...