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

简介: MATLAB中用BP神经网络预测人体脂肪百分比数据

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

问题:估计脂肪百分比

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

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

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

为什么是神经网络?

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

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

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

准备数据

函数拟合的数据是两个矩阵,即输入矩阵X和目标矩阵T。

输入矩阵的每一列将有13个元素,代表一个已知脂肪百分比的身体数据。

目标矩阵的每一对应列将有一个元素,代表脂肪百分比。

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

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

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

size(X)
size(T)

用神经网络拟合函数

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

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

setdemorandstream(491)

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

在这个例子中,我们将尝试使用由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)

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


相关文章
|
5天前
|
机器学习/深度学习 算法 计算机视觉
m基于Yolov2深度学习网络的人体喝水行为视频检测系统matlab仿真,带GUI界面
MATLAB 2022a中使用YOLOv2算法对avi视频进行人体喝水行为检测,结果显示成功检测到目标。该算法基于全卷积网络,通过特征提取、锚框和损失函数优化实现。程序首先打乱并分割数据集,利用预训练的ResNet-50和YOLOv2网络结构进行训练,最后保存模型。
14 5
|
11月前
|
机器学习/深度学习 监控 并行计算
m基于PMP投影匹配追踪算法的人体姿态提取matlab仿真
m基于PMP投影匹配追踪算法的人体姿态提取matlab仿真
202 0
|
11月前
|
机器学习/深度学习 算法 人机交互
m基于遗传优化的凸松弛算法完成从二维人体图像中提取三维姿态的matlab仿真
m基于遗传优化的凸松弛算法完成从二维人体图像中提取三维姿态的matlab仿真
125 0
|
12月前
|
算法 数据库
m基于HOG特征提取和GRNN网络的人体姿态识别算法matlab仿真,样本为TOF数据库的RGB-D深度图像
m基于HOG特征提取和GRNN网络的人体姿态识别算法matlab仿真,样本为TOF数据库的RGB-D深度图像
218 0
|
机器学习/深度学习 算法
m基于GRNN广义回归神经网络和HOG特征提取的人体姿态检测识别matlab仿真,样本集为TOF深度图
m基于GRNN广义回归神经网络和HOG特征提取的人体姿态检测识别matlab仿真,样本集为TOF深度图
294 0
m基于GRNN广义回归神经网络和HOG特征提取的人体姿态检测识别matlab仿真,样本集为TOF深度图
|
机器学习/深度学习 传感器 算法
基于Matlab模拟人体心血管系统的流量和压力
基于Matlab模拟人体心血管系统的流量和压力
|
机器学习/深度学习 传感器 算法
【信号检测】基于MVDR算法进行多个人体生命体征检测附matlab代码
【信号检测】基于MVDR算法进行多个人体生命体征检测附matlab代码
|
21天前
|
安全 Linux 虚拟化
网络名称空间在Linux虚拟化技术中的位置
网络名称空间(Network Namespaces)是Linux内核特性之一,提供了隔离网络环境的能力,使得每个网络名称空间都拥有独立的网络设备、IP地址、路由表、端口号范围以及iptables规则等。这一特性在Linux虚拟化技术中占据了核心位置🌟,它不仅为构建轻量级虚拟化解决方案(如容器📦)提供了基础支持,也在传统的虚拟机技术中发挥作用,实现资源隔离和网络虚拟化。
网络名称空间在Linux虚拟化技术中的位置
|
21天前
|
安全 Linux 网络虚拟化
Linux网络名称空间和Veth虚拟设备的关系
在讨论Linux网络名称空间和veth(虚拟以太网对)之间的关系时,我们必须从Linux网络虚拟化的核心概念开始。Linux网络名称空间和veth是Linux网络虚拟化和容器化技术的重要组成部分,它们之间的关系密不可分,对于构建隔离、高效的网络环境至关重要。😊