前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MATLAB中用BP神经网络预测人体脂肪百分比数据|附代码数据

MATLAB中用BP神经网络预测人体脂肪百分比数据|附代码数据

原创
作者头像
拓端
发布2023-01-06 23:10:08
8390
发布2023-01-06 23:10:08
举报
文章被收录于专栏:拓端tecdat拓端tecdat

原文链接:http://tecdat.cn/?p=22739

最近我们被客户要求撰写关于神经网络的研究报告,包括一些图形和统计输出。

这个例子说明了一个函数拟合的神经网络如何根据测量结果来估计脂肪百分比(BFP)?

问题:估计脂肪百分比

在这个例子中,我们试图建立一个神经网络来估计一个人的脂肪百分比,这个人由13个物理属性描述。

  • 年龄
  • 体重
  • 身高
  • 颈围
  • 胸围
  • 腹部周长?
  • 臀围?
  • 大腿周长?
  • 膝盖周长
  • 踝关节周长
  • 肱二头肌(伸展)周长
  • 前臂周长
  • 腕围

这是一个拟合问题的例子,其中输入与相关的目标输出相匹配,我们希望创建一个神经网络,它不仅可以估计已知的目标,给定已知的输入,而且还可以泛化,来准确估计未知数据的结果。

为什么是神经网络?

神经网络在函数拟合问题上非常出色。一个有足够多的元素(称为神经元)的神经网络可以以任意的精度拟合任何数据。它们特别适合于解决非线性问题。鉴于现实世界的非线性性质,如身体脂肪的增加,神经网络是解决该问题的不错方法。

十三个物理属性将作为神经网络的输入,而体脂百分比将是目标。

该网络通过使用已经知道体脂百分比的人体数据来建立模型,来训练它产生目标值。

准备数据

函数拟合的数据是两个矩阵,即输入矩阵X和目标矩阵T。 输入矩阵的每一列将有13个元素,代表一个已知脂肪百分比的身体数据。 目标矩阵的每一对应列将有一个元素,代表脂肪百分比。

加载数据集后,我们可以查看输入X和目标变量T的大小。

请注意,X和T都有252列。这些代表了252种体质(输入变量)和相关的体脂百分比(目标变量)。

输入矩阵X有13行,代表13个属性。目标矩阵T只有一行,因为对于每个例子我们只有一个期望的输出,即脂肪百分比。

代码语言:javascript
复制
size(X)
size(T)
图片
图片

用神经网络拟合函数

下一步是创建一个神经网络,它将学习估计脂肪百分比。

由于神经网络以随机的初始权重开始,这个例子每次运行的结果都会略有不同。设置随机种子是为了避免这种随机性。

代码语言:javascript
复制
setdemorandstream(491)

两层(即一个隐藏层)前馈神经网络可以拟合任何输入-输出关系,只要隐藏层有足够的神经元。不属于输出层的层被称为隐藏层。

在这个例子中,我们将尝试使用由15个神经元组成的单一隐藏层。一般来说,更难的问题需要更多的神经元,也许需要更多的层。较简单的问题则需要较少的神经元。

输入和输出的大小为0,因为神经网络还没有被配置为与我们的输入和目标数据相匹配。将在网络被训练时进行。

代码语言:javascript
复制
net?=?fitnet(15);
view(net)
图片
图片

现在,网络已经准备好被训练了。样本被自动划分为训练集、验证集和测试集。训练集被用来训练网络。只要网络在验证集上继续改进,训练就会继续。测试集提供了一个完全独立的网络准确性的衡量标准。


点击标题查阅往期内容

图片
图片

【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析

左右滑动查看更多

01

图片
图片

02

图片
图片

03

图片
图片

04

图片
图片

神经网络训练工具显示正在训练的网络和用于训练的算法。它还显示了训练期间的训练状态,停止训练的标准将以绿色突出显示。

底部的按钮可以打开有用的图表,这些图表可以在训练中和训练后打开。算法名称和绘图按钮旁边的链接可以打开关于这些主题的文档。

代码语言:javascript
复制
?train(net,X,T);
图片
图片

要看网络的性能在训练中是如何提高的,可以点击训练工具中的 "性能 "按钮。 性能是以均方误差来衡量的,并以对数比例显示。随着网络的训练,误差迅速减小。训练集、验证集和测试集的性能分别显示。最终的网络是在验证集上表现最好的网络。

代码语言:javascript
复制
plotperform(tr)
图片
图片

测试神经网络

现在可以测量训练后的神经网络的均方误差与测试样本的关系。我们可以了解该网络在应用于真实数据时的表现如何。

代码语言:javascript
复制
mse(net,testT,testY)
图片
图片

另一个衡量神经网络对数据拟合程度的方法是回归图。这里的回归图是在所有样本中绘制的。 回归图显示了实际网络输出与目标值的关系。如果网络已经学会了很好地拟合数据,那么这个输出-目标关系的线性拟合应该与图的左下角和右上角紧密相交。

如果不是这样,那么进一步的训练,或者训练一个有更多隐藏神经元的网络。

代码语言:javascript
复制
plot(T,Y)
图片
图片

另一个衡量神经网络对数据的拟合程度的方法是误差直方图。这显示了误差大小是如何分布的。通常情况下,大多数误差接近零,很少有误差远离零。

代码语言:javascript
复制
e?=?T?-?Y;
hist(e)
图片
图片

这个例子说明了如何设计一个神经网络,从身体特征来估计脂肪百分比。


图片
图片

点击文末 “阅读原文”

获取全文完整代码数据资料。

本文选自《MATLAB中用BP神经网络预测人体脂肪百分比》。

点击标题查阅往期内容

【视频】CNN(卷积神经网络)模型以及R语言实现回归数据分析 Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析 深度学习实现自编码器Autoencoder神经网络异常检测心电图ECG时间序列spss modeler用决策树神经网络预测ST的股票 Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化 RNN循环神经网络 、LSTM长短期记忆网络实现时间序列长期利率预测 结合新冠疫情COVID-19股票价格预测:ARIMA,KNN和神经网络时间序列分析 深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据 用PyTorch机器学习神经网络分类预测银行客户流失模型 PYTHON用LSTM长短期记忆神经网络的参数优化方法预测时间序列洗发水销售数据 Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化 R语言深度学习卷积神经网络 (CNN)对 CIFAR 图像进行分类:训练与结果评估可视化 深度学习:Keras使用神经网络进行简单文本分类分析新闻组数据 Python用LSTM长短期记忆神经网络对不稳定降雨量时间序列进行预测分析 R语言深度学习Keras循环神经网络(RNN)模型预测多输出变量时间序列 R语言KERAS用RNN、双向RNNS递归神经网络、LSTM分析预测温度时间序列、 IMDB电影评分情感 Python用Keras神经网络序列模型回归拟合预测、准确度检查和结果可视化R语言中的神经网络预测时间序列:多层感知器(MLP)和极限学习机(ELM)数据分析报告 R语言深度学习:用keras神经网络回归模型预测时间序列数据 Matlab用深度学习长短期记忆(LSTM)神经网络对文本数据进行分类 R语言KERAS深度学习CNN卷积神经网络分类识别手写数字图像数据(MNIST) MATLAB中用BP神经网络预测人体脂肪百分比数据 Python中用PyTorch机器学习神经网络分类预测银行客户流失模型 R语言实现CNN(卷积神经网络)模型进行回归数据分析 SAS使用鸢尾花(iris)数据集训练人工神经网络(ANN)模型 【视频】R语言实现CNN(卷积神经网络)模型进行回归数据分析 Python使用神经网络进行简单文本分类 R语言用神经网络改进Nelson-Siegel模型拟合收益率曲线分析 R语言基于递归神经网络RNN的温度时间序列预测 R语言神经网络模型预测车辆数量时间序列 R语言中的BP神经网络模型分析学生成绩 matlab使用长短期记忆(LSTM)神经网络对序列数据进行分类 R语言实现拟合神经网络预测和结果可视化 用R语言实现神经网络预测股票实例 使用PYTHON中KERAS的LSTM递归神经网络进行时间序列预测 python用于NLP的seq2seq模型实例:用Keras实现神经网络机器翻译 用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 原文链接:http://tecdat.cn/?p=22739
    • 问题:估计脂肪百分比
      • 为什么是神经网络?
        • 准备数据
          • 用神经网络拟合函数
            • 测试神经网络
            相关产品与服务
            机器翻译
            机器翻译(Tencent Machine Translation,TMT)结合了神经机器翻译和统计机器翻译的优点,从大规模双语语料库自动学习翻译知识,实现从源语言文本到目标语言文本的自动翻译,目前可支持十余种语言的互译。
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com