主要内容

蟹的分类

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

问题:螃蟹的分类

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

为什么神经网络?

神经网络已经证明自己是熟练的分类器,特别适合寻求非线性问题。鉴于现实世界现象的非线性性质,如螃蟹分类,神经网络肯定是解决问题的好候选人。

六种物理特征将充当神经网络的输入,螃蟹的性别将是目标。给定输入,该输入构成了螃蟹的物理特征的六个观察到的值,预计神经网络将识别螃蟹是男性还是女性。

这是通过向神经网络呈现的先前记录的输入来实现,然后调整它以产生所需的目标输出。这个过程称为神经网络培训。

准备数据

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

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

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

这里加载了数据集。

[x,t] = crab_dataset;尺寸(x)
ans =1×26 200.
尺寸(t)
ans =1×22 200年

构建神经网络分类器

下一步是创建一个神经网络,该网络将学会识别螃蟹的性别。

由于神经网络以随机初始权重开始,因此每次运行时,此示例的结果将略有不同。随机种子被设置为避免这种随机性。但是,这不是您自己的应用程序所必需的。

setdemorandstream (491218382)

双层(即一个隐藏层)前锋神经网络可以学习在隐藏层中给出足够神经元的任何输入 - 输出关系。不输出图层的图层称为隐藏层。

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

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

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

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

[净,tr] =火车(网,x,t);

要了解网络在培训期间的性能如何改进,请单击培训工具中的“性能”按钮,或调用PlotPerform。

性能是以均方的误差衡量的,并且以日志比例示出。随着网络训练,它迅速下降。

为每个培训,验证和测试集显示性能。

PlotPerform(TR)

测试分类器

现在可以使用测试样本进行训练的神经网络。这将使我们在从现实世界应用于数据时如何做网络的感觉。

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

testx = x(:,tr.testind);testt = t(:,tr.testind);testy = net(testx);testindices = vec2ind(testy)
testIndices =1×30.2 2 1 1 2 2 1 2 2 2 1 2 2 2 1 1 2 2 2 1 1 2 2 2 1 1 2 2 1 1 2 2 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 1 1 2 2 1 1 1 1 1

一种衡量神经网络如何适应数据的衡量标准是混乱的图。这里,混淆矩阵在所有样品上绘制。

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

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

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

plotconfusion (testT暴躁的)

以下是正确和不正确的分类的总体百分比。

(c cm) =混乱(testT,暴躁的)
c = 0
厘米=2×212 0 0 18
流('百分比正确分类:%%% \ n',100 *(1-c));
正确分类百分比:100.000000%
流('百分比不正确分类:%f %% \ n',100 * c);
错误分类百分比:0.000000%

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

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

Plotroc(Testt,Testy)

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

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