目录
一、介绍
二、实验数学原理
三、实验算法和实验步骤
四、实例分析
一、介绍
神经网络是一种运算模型,由大量的节点(或称“神经元”,或“单元”)和之间相互联接构成。每个节点代表一种特定的输出函数,称为激励函数(activation function)。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重(weight),这相当于人工神经网络的记忆。网络的输出则依网络的连接方式,权重值和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。人工神经网络通常是通过一个基于数学统计学类型的学习方法(Learning Method)得以优化,所以人工神经网络也是数学统计学方法的一种实际应用,通过统计学的标准数学方法我们能够得到大量的可以用函数来表达的局部结构空间,另一方面在人工智能学的人工感知领域,我们通过数学统计学的应用可以来做人工感知方面的决定问题(也就是说通过统计学的方法,人工神经网络能够类似人一样具有简单的决定能力和简单的判断能力),这种方法比起正式的逻辑学推理演算更具有优势。
二、实验数学原理
三、实验算法和实验步骤
步骤:
1.准备训练网络的样本,并对数据进行标准化处理。
2.初始化网络的参数,包括最大训练次数,隐含层神经元数量,网络学习速率,训练的目标误差
3.对训练集样本进行训练,找到拟合模型
4.用该模型对训练集进行预测
5.对训练集的预测结果进行还原
6.对训练集的预测结果进行验证
7.用模型对对预测集进行预测
8.对预测集的结果进行还原并输出
四、实例分析
数据来源:
样本 | 跳高成绩(m) | 30行进跑(s) | 立定三级跳远(m) | 助跑摸高(m) | 助跑4—6步跳高(m) | 负重深蹲杠铃(kg) | 杠铃半蹲系数 | 100(s) | 抓举(kg) |
序号 | |||||||||
1 | 2.24 | 3.2 | 9.6 | 3.45 | 2.15 | 140 | 2.8 | 11 | 50 |
2 | 2.33 | 3.2 | 10.3 | 3.75 | 2.2 | 120 | 3.4 | 10.9 | 70 |
3 | 2.24 | 3 | 9 | 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 | 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 | 9 | 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 | 50 |
11 | 2.24 | 3.2 | 9.5 | 3.4 | 2.15 | 115 | 2.8 | 11.9 | 50 |
12 | 2.2 | 3.9 | 9 | 3.1 | 2 | 80 | 2.2 | 13 | 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 | 9.3 | 3.3 | 2.05 | 100 | 2.8 | 11.2 | 50 |
代码实例:
%%
clear;clc;close all;
%% 读取数据集
data=xlsread('Data2.xlsx');
%% 训练集数据
x = data(1:14,3:10)';
y = data(1:14,2)'; %跳高成绩(m)
%% 数据标准化
[xn, inputStr] = mapminmax(x);
[yn, outputStr]=mapminmax(y);
%% 构造神经网络
net = newff(xn,yn,[4,1],{'tansig','logsig'},'traingd'); %隐层神经元个数为4
%设置训练次数
net.trainParam.epochs = 10000; %隐层神经元个数为4
%训练网络所要达到的目标误差
net.trainParam.goal = 0.65 * 10^(-3);
% 设置学习率
net.trainParam.lr=0.1;
%网络误差如果连续6次迭代都没变化,则matlab会默认终止训练。为了让程序继续运行,用以下命令取消这条设置
net.divideFcn = '';
%% 对训练集进行训练
net=train(net1,xn,yn); %隐层神经元个数为4
%% 预测训练集
predicy=sim(net,xn); %隐层神经元个数为4
%将得到的数据反归一化得到预测数据
predict_=mapminmax('reverse', predicy, outputStr); %隐层神经元个数为4
%% 对训练集预测及原始结果进行绘图
plot(y,'b')
hold on
plot(predict_,'r')