主要内容

蟹的分类

这个例子演示了使用神经网络作为分类器,从螃蟹的物理维度来识别螃蟹的性别。

问题:螃蟹的分类

在这个例子中,我们试图构建一个分类器,可以根据物理测量来识别螃蟹的性别。蟹的六个物理特征被考虑到:种类,前唇,后宽,长度,宽度和深度。现在的问题是根据这6种物理特征的观测值来确定螃蟹的性别。

神经网络的原因吗?

神经网络已经证明自己是熟练的分类器,特别适合处理非线性问题。考虑到现实世界现象的非线性本质,比如螃蟹分类,神经网络当然是解决这个问题的一个很好的候选对象。

这六个生理特征将作为神经网络的输入,而蟹的性别将成为目标。给定一个输入,该输入由螃蟹的6个物理特征的观测值组成,神经网络预计将识别螃蟹是雄性还是雌性。

这是通过将先前记录的输入输入到神经网络,然后对其进行调整以产生所需的目标输出来实现的。这个过程叫做神经网络训练。

准备数据

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

输入矩阵的每第i列都有6个元素,分别代表螃蟹的种类、正面、背面宽度、长度、宽度和深度。

目标矩阵的每一列都有两个元素。雌性蟹的第一个元素是“1”,雄性蟹的第二个元素是“1”。(所有其他元素为零)。

这里加载了数据集。

[x, t] = crab_dataset;大小(x)大小(t)
Ans = 6 200 Ans = 2 200

构建神经网络分类器

下一步是创建一个神经网络来学习识别螃蟹的性别。

由于神经网络的初始权值是随机的,所以每次运行时,结果都会略有不同。随机种子的设置就是为了避免这种随机性。然而,对于您自己的应用程序来说,这并不是必需的。

setdemorandstream (491218382)

两层(即单隐层)前馈神经网络只要在隐层中有足够的神经元,就可以学习任意的输入输出关系。非输出层的层称为隐藏层。

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

输入和输出的大小为0,因为网络还没有配置为匹配我们的输入和目标数据。当网络被训练时就会发生这种情况。

网= patternnet (10);视图(净)

现在网络已经准备好接受训练了。将样本自动划分为训练集、验证集和测试集。训练集用于网络教学。只要网络在验证集上继续改进,训练就会继续进行。该测试集提供了一个完全独立的网络准确性度量。

(净,tr) =火车(净,x, t);nntraintool

nntraintool (“关闭”

要查看网络的性能在培训期间是如何提高的,可以单击培训工具中的“性能”按钮,或者调用PLOTPERFORM。

性能以均方误差衡量,并以对数尺度显示。随着网络的训练,它迅速下降。

显示每个训练、验证和测试集的性能。

plotperform (tr)

测试分类器

经过训练的神经网络现在可以用测试样本进行测试。这将给我们一个感觉,当应用到来自真实世界的数据时,这个网络将做得多好。

网络输出的范围是0到1,所以我们可以使用vec2ind函数获取类索引作为每个输出向量中最高元素的位置。

testX = x (:, tr.testInd);testT = t (:, tr.testInd);暴躁的=净(testX);testIndices = vec2ind(暴躁的)
testIndices =列1到13 2 2 2 1 2 2 2 2 1 2 2 2 1列14到26 1 2 2 2 1 2 2 1 2 2 1 2 1 1 1 1 1列27到30 1 2 2 1 1 1

衡量神经网络与数据吻合程度的一个指标是混淆图。这里绘制了所有样本的混淆矩阵。

混淆矩阵显示正确和错误分类的百分比。正确的分类是矩阵对角线上的绿色方块。红色方块是错误的分类。

如果网络已经学会正确分类,红色方块中的百分比应该非常小,表明很少有错误分类。

如果情况并非如此,那么进一步的训练,或者训练一个拥有更多隐藏神经元的网络,将是可取的。

plotconfusion (testT暴躁的)

下面是正确和错误分类的总体百分比。

[c,cm] = confusion(testT,testY) fprintf('正确分类百分比:%f%%\n', 100 * (1 - c));流('百分比错误分类:%f%%\n', 100 * c);
c = 0.0333 cm = 12 1 0 17百分比正确分类:96.666667%百分比错误分类:3.333333%

另一个衡量神经网络有多好的拟合数据是接收机操作特征图。这显示了当输出的阈值从0到1变化时,假阳性和真阳性率是如何相关的。

越往左和越往上,越少的假阳性需要被接受,以获得较高的真阳性率。最好的分类器会有一条线从左下角,到左上角,到右上角,或接近它。

plotroc (testT暴躁的)

这个例子演示了使用神经网络对螃蟹进行分类。

探索其他示例和文档以更深入地了解神经网络及其应用。