原文链接: http://tecdat.cn/p=22739原文来源:拓端数据部落公众号
这个例子说明函数拟合的神经网络如何根据测量结果估计脂肪率(BFP )。
问题:估计脂肪率在这个例子中,我们试图建立神经网络来估计用13个物理属性描述的人的脂肪率。
年龄、身高、脖子、腰围、大腿、膝盖、踝关节、肱二头肌(伸展)、周长、前臂周长、腕围这一拟合问题的一个实例,其中输入与相关目标输出匹配。 我们希望构建一个神经网络,不仅可以估计已知目标,提供已知输入,而且可以泛化以准确估计未知数据的结果。
为什么是神经网络? 神经网络在函数拟合问题上非常好。 具有足够数量的元素(称为神经元)的神经网络可以以任何精度拟合任何数据。 这些特别适合解决非线性问题。 考虑到现实世界的非线性,如体脂增长,神经网络是解决这一问题的好方法。
13个物理属性为神经网络输入,体脂百分比为目标。
该网络训练使用已经知道体内脂肪率的人体数据制作模型,生成目标值。
要准备数据函数拟合的数据是两个矩阵:输入矩阵x和目标矩阵t。
输入矩阵的每一列有13个元素,表示已知脂肪率的身体数据。
目标矩阵中的每个对应列都有表示脂肪率的元素。
加载数据集后,可以检查输入x和目标变量t的大小。
请注意,x和t有252列。 它们表示252种体质(输入变量)和相关的身体脂肪率(目标变量)。
输入矩阵x有13行,表示13个属性。 目标矩阵t只有一行。 因为每个例子的预期输出,也就是脂肪率只有一个。
是size(x ) size(x )
在神经网络中拟合函数的下一步是创建学习估计脂肪率的神经网络。
因为神经网络以随机初始权重开始,所以这个例子每次运行结果都会略有不同。 设定随机种子是为了避免这种随机性。
setdemorandstream(82 )两层,即一个隐层)前馈神经网络可以与任何输入和输出关系相匹配,只要隐层具有足够的神经元即可。 不属于输出层的层称为隐藏层。
在本例中,我们将尝试使用由15个神经元组成的单个隐藏层。 一般来说,更难的问题需要更多的神经元,可能需要更多的层。 简单的问题是神经元的数量会变少。
输入和输出的大小为0。 因为神经网络还没有被配置为匹配输入和目标数据。 在网络被训练的时候进行。
net=fitnet(15; 是视图(net )
现在,互联网已经准备好被训练了。 示例自动分为训练集、验证集和测试集。 训练集用于网络训练。 只要网络在验证集中继续改进,培训就将继续进行。 测试集提供了完全独立的网络正确性度量。
神经网络训练工具展示了正在训练的网络和用于训练的算法。 还将显示训练期间的训练状态,中止训练的标准将以绿色突出显示。
下面的按钮可以打开方便的图表,您可以在训练期间和训练后打开这些图表。 单击算法名称和绘图按钮旁边的链接可打开有关这些主题的文档。
train(net,x,t );
要查看在培训过程中网络性能如何提高,请单击培训工具中的“性能”按钮。
性能以均方误差测量,以对数比例显示。 随着网络的训练,误差迅速减少。 将分别显示培训集、验证集和测试集的性能。 最终的网络是验证集中最好的网络。
打印性能(tr ) )。
测试神经网络可以测量训练后神经网络的均方误差与测试样本之间的关系。 可以了解这个网络是如何应用于实际数据的。
MSe (网络、测试、测试) )。
测量神经网络数据拟合优度的另一种方法是回归图。 这里的回归图画在所有的样本上。
回归图显示了实际网络输出与目标值的关系。 如果网络学会了正确拟合数据,则此输出-目标关系的线性拟合必须与图的左下角和右上角密切相交。
否则,进一步训练或训练有更多隐藏神经元的网络。
打印(t,y ) )。
测量神经网络对数据拟合度的另一种方法是误差直方图。 这表明误差的大小是如何分布的。 通常,大多数误差接近零,误差很少偏离零。
e=T - Y; 是hist(e )
本例展示了一种根据身体特征估计脂肪率的神经网络设计方法。
最受欢迎的见解
1.r语言采用神经网络改进nelson-siegel模型的拟合收益率曲线分析
2.r语言拟合神经网络预测及结果可视化
3 .基于3.python遗传算法-神经网络-模糊逻辑控制算法的乐透分析
4 .为NLP使用python:keras的多标记文本lstm神经网络分类
5.r语言神经网络股票预测实例
6 .基于r语言Keras的小数据集深度学习图像分类
7 .用于NLP的seq2seq模型实例在Keras上实现神经机器翻译
8 .基于8.python中网格搜索算法优化的深度学习模型分析糖
9.matlab使用贝叶斯优化进行深度学习