原文链接:http://tecdat.cn/?p=22739
原文出处:拓端数据部落公众号
这个例子说明了一个函数拟合的神经网络如何根据测量结果来估计脂肪百分比(BFP)。
问题:估计脂肪百分比
在这个例子中 , 我们试图建立一个神经网络来估计一个人的脂肪百分比 , 这个人由13个物理属性描述 。
- 年龄
- 体重
- 身高
- 颈围
- 胸围
- 腹部周长
- 臀围
- 大腿周长
- 膝盖周长
- 踝关节周长
- 肱二头肌(伸展)周长
- 前臂周长
- 腕围
为什么是神经网络?
神经网络在函数拟合问题上非常出色 。 一个有足够多的元素(称为神经元)的神经网络可以以任意的精度拟合任何数据 。 它们特别适合于解决非线性问题 。 鉴于现实世界的非线性性质 , 如身体脂肪的增加 , 神经网络是解决该问题的不错方法 。
十三个物理属性将作为神经网络的输入 , 而体脂百分比将是目标 。
该网络通过使用已经知道体脂百分比的人体数据来建立模型 , 来训练它产生目标值 。
准备数据
函数拟合的数据是两个矩阵 , 即输入矩阵X和目标矩阵T 。
输入矩阵的每一列将有13个元素 , 代表一个已知脂肪百分比的身体数据 。
目标矩阵的每一对应列将有一个元素 , 代表脂肪百分比 。
加载数据集后 , 我们可以查看输入X和目标变量T的大小 。
请注意 , X和T都有252列 。 这些代表了252种体质(输入变量)和相关的体脂百分比(目标变量) 。
输入矩阵X有13行 , 代表13个属性 。 目标矩阵T只有一行 , 因为对于每个例子我们只有一个期望的输出 , 即脂肪百分比 。
- size(X)
- size(T)
文章图片
用神经网络拟合函数
下一步是创建一个神经网络 , 它将学习估计脂肪百分比 。
由于神经网络以随机的初始权重开始 , 这个例子每次运行的结果都会略有不同 。 设置随机种子是为了避免这种随机性 。
setdemorandstream(82)
两层(即一个隐藏层)前馈神经网络可以拟合任何输入-输出关系 , 只要隐藏层有足够的神经元 。 不属于输出层的层被称为隐藏层 。
在这个例子中 , 我们将尝试使用由15个神经元组成的单一隐藏层 。 一般来说 , 更难的问题需要更多的神经元 , 也许需要更多的层 。 较简单的问题则需要较少的神经元 。
输入和输出的大小为0 , 因为神经网络还没有被配置为与我们的输入和目标数据相匹配 。 将在网络被训练时进行 。
- net = fitnet(15);
- view(net)
文章图片
现在 , 网络已经准备好被训练了 。 样本被自动划分为训练集、验证集和测试集 。 训练集被用来训练网络 。 只要网络在验证集上继续改进 , 训练就会继续 。 测试集提供了一个完全独立的网络准确性的衡量标准 。
神经网络训练工具显示正在训练的网络和用于训练的算法 。 它还显示了训练期间的训练状态 , 停止训练的标准将以绿色突出显示 。
底部的按钮可以打开有用的图表 , 这些图表可以在训练中和训练后打开 。 算法名称和绘图按钮旁边的链接可以打开关于这些主题的文档 。
train(net,X,T);
文章图片
要看网络的性能在训练中是如何提高的 , 可以点击训练工具中的 "性能 "按钮 。
性能是以均方误差来衡量的 , 并以对数比例显示 。 随着网络的训练 , 误差迅速减小 。 训练集、验证集和测试集的性能分别显示 。 最终的网络是在验证集上表现最好的网络 。
plotperform(tr)
文章图片
测试神经网络
现在可以测量训练后的神经网络的均方误差与测试样本的关系 。 我们可以了解该网络在应用于真实数据时的表现如何 。
mse(net,testT,testY)
文章图片
另一个衡量神经网络对数据拟合程度的方法是回归图 。 这里的回归图是在所有样本中绘制的 。
回归图显示了实际网络输出与目标值的关系 。 如果网络已经学会了很好地拟合数据 , 那么这个输出-目标关系的线性拟合应该与图的左下角和右上角紧密相交 。
如果不是这样 , 那么进一步的训练 , 或者训练一个有更多隐藏神经元的网络 。
- plot(T,Y)
文章图片
另一个衡量神经网络对数据的拟合程度的方法是误差直方图 。 这显示了误差大小是如何分布的 。 通常情况下 , 大多数误差接近零 , 很少有误差远离零 。
- e = T - Y;
- hist(e)
文章图片
这个例子说明了如何设计一个神经网络 , 从身体特征来估计脂肪百分比 。
文章图片
最受欢迎的见解
1.r语言用神经网络改进nelson-siegel模型拟合收益率曲线分析
2.r语言实现拟合神经网络预测和结果可视化
3.python用遗传算法-神经网络-模糊逻辑控制算法对乐透分析
4.用于nlp的python:使用keras的多标签文本lstm神经网络分类
5.用r语言实现神经网络预测股票实例
6.R语言基于Keras的小数据集深度学习图像分类
7.用于NLP的seq2seq模型实例用Keras实现神经机器翻译
8.python中基于网格搜索算法优化的深度学习模型分析糖
【周长|拓端数据tecdat:MATLAB中用BP神经网络预测人体脂肪百分比数据】9.matlab使用贝叶斯优化的深度学习
推荐阅读
- 区块|面向2030:影响数据存储产业的十大应用(下):新兴应用
- 选型|数据架构选型必读:2021上半年数据库产品技术解析
- 殊荣|蝉联殊荣!数梦工场荣获DAMA2021数据治理三项大奖
- 数据|数智安防时代 东芝硬盘助力智慧安防新赛道
- 平台|数梦工场助力北京市中小企业公共服务平台用数据驱动业务创新
- 数据|中标 | 数梦工场以数字新动能助力科技优鄂
- 建设|数据赋能业务,数梦工场助力湖北省智慧应急“十四五”开局
- 市民|大数据、人工智能带来城市新变化 科技赋能深化文明成效
- 趋势|[转]从“智能湖仓”升级看数据平台架构未来方向
- 数据|天问一号火星离子与中性粒子分析仪首个成果面世