主要内容

身体脂肪估计

这个例子演示了如何拟合函数神经网络可以估计基于解剖测量体脂百分比。

问题:估计身体脂肪百分比

在这个例子中,我们试图建立一个神经网络,可以估计一个人的体脂百分比所描述的物理属性:13

  • 年龄(年)

  • 体重(磅)

  • 身高(英寸)

  • 颈围(cm)

  • 胸围(cm)

  • 腹部周长(厘米)

  • 臀围(cm)

  • 大腿围(cm)

  • 膝盖周长(厘米)

  • 脚踝周长(厘米)

  • 肱二头肌(扩展)周长(厘米)

  • 前臂周长(厘米)

  • 手腕周长(厘米)

这的一个例子是一个拟合问题,输入匹配到相关的目标输出,和我们想要创建一个神经网络不仅估计给定已知输入已知的目标,但也可以概括准确估计输出输入,没有用于设计解决方案。

神经网络的原因吗?

神经网络非常擅长功能配合问题。神经网络有足够的元素(称为神经元)与任意精度可以适合任何数据。它们特别适合解决非线性问题。鉴于现实世界现象的非线性性质,像脂肪吸积,神经网络是一个很好的候选人解决问题。

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

网络将被设计通过解剖的尸体的体脂百分比是已知训练它生产目标估值。

准备数据

函数拟合问题的数据建立的神经网络通过将数据组织成两个矩阵,输入矩阵X和目标矩阵T。

输入矩阵的每个i列会有十三个元素代表一个身体与已知的身体脂肪百分比。

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

这样的数据集加载。

[X, T] = bodyfat_dataset;

我们可以把输入X和目标T的大小。

注意,X和T有252列。这些代表252体型(输入)和相关的身体脂肪百分比(目标)。

的输入矩阵X有13行,十三个属性。目标矩阵T只有一行,为每一个例子中,我们只有一个预期的输出,体脂百分比。

大小(X)
ans =1×2252年13
大小(T)
ans =1×21 252

用神经网络拟合函数

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

由于神经网络从随机初始权重,这个例子的结果会略有不同,每次运行。随机种子将避免这种随机性。然而这并不是您自己的应用程序所必需的。

setdemorandstream (491218382)

两层(即one-hidden-layer)前馈神经网络可以适合任何给予足够的隐层神经元的输入-输出关系。层不输出层被称为隐藏层。

我们将尝试一个单隐层神经元15这个例子。一般来说,更困难的问题需要更多的神经元,或许更多的层。简单的问题需要较少的神经元。

输入和输出大小为0,因为网络尚未配置匹配我们的输入和目标数据。这将发生在网络训练。

网= fitnet (15);视图(净)

现在网络已经准备好被训练。样品会自动分成训练,验证集和测试集。训练集用于教网络。培训持续只要网络持续改进验证集。网络的测试集提供了一个完全独立的测量精度。

神经网络训练工具显示了该算法用于网络训练和训练它。它还显示培训期间状态和停止的标准培训将用绿色被加亮。

底部的按钮打开有用的情节,可以打开期间和之后的训练。链接算法名称和图旁边的按钮打开文档的主题。

(净,tr) =火车(净,X, T);

看看网络的性能改进的培训期间,点击“性能”按钮在训练工具,或者叫PLOTPERFORM。

性能测量的均方误差,和对数尺度所示。它迅速减少网络训练。

显示性能的训练,验证集和测试集。最后一个网络是表现最好的网络验证集。

plotperform (tr)

测试神经网络

训练神经网络的均方误差现在可以测量的测试样本。这将给我们的网络将如何当应用于现实世界的数据。

testX = X (:, tr.testInd);testT = T (:, tr.testInd);暴躁的=净(testX);穿孔= mse(净、testT暴躁的)
穿孔= 36.9404

另一个测量的神经网络具有适应数据回归的阴谋。这里的回归是绘制在所有样本。

回归图显示了实际网络输出策划相关的目标值。如果网络已经学会适应数据好,线性适合这种输出目标关系应密切相交和右上的左下角的阴谋。

如果情况不是这样,那么进一步的培训,或培训网络有更多隐藏的神经元,将是明智的。

Y =净(X);plotregression (T, Y)

另一个的第三个标准神经网络具有适合数据直方图的错误。这显示了错误大小分布。通常大多数错误都接近于零,远离,用很少的错误。

e = T - Y;ploterrhist (e)

这个例子演示了如何设计一个神经网络估计物理特征的体脂百分比。

探索其他的例子和文档了解神经网络及其应用。