主要内容

蟹的分类

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

问题:螃蟹的分类

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

为什么是神经网络?

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

这六种身体特征将作为神经网络的输入,而螃蟹的性别将成为目标。给定一个输入,它构成了蟹的六个物理特征的观测值,神经网络有望识别螃蟹是雄性还是雌性。

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

数据准备

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

输入矩阵的每个第i列将有六个元素代表螃蟹的种类,frontallip, rewidth, length, width和depth。

目标矩阵的每一列都有两个元素。雌性螃蟹在第一个元素中以1表示,雄性螃蟹在第二个元素中以1表示。(所有其他元素为零)。

这里加载数据集。

[x,t] = crab_dataset;大小(x)
ans =1×2200年6
大小(t)
ans =1×22 200年

建立神经网络分类器

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

由于神经网络从随机的初始权重开始,这个例子的结果在每次运行时都会略有不同。随机种子的设置是为了避免这种随机性。但是,对于您自己的应用程序来说,这不是必需的。

setdemorandstream (491218382)

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

对于这个例子,我们将尝试一个包含10个神经元的隐藏层。一般来说,更困难的问题需要更多的神经元,也许还需要更多的层次。简单的问题需要更少的神经元。

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

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

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

[net,tr] = train(net,x,t);

{

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

性能是根据均方误差来衡量的,并以对数刻度表示。随着网络的训练,它迅速下降。

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

plotperform (tr)

{

测试分类器

训练过的神经网络现在可以用测试样本进行测试。这将让我们了解网络在应用于来自现实世界的数据时的表现。

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

testX = x(:,tr.testInd);test = t(:,tr.testInd);testY = net(testX);testIndices = vec2ind(testY)
testIndices =1×302 2 2 1 2 2 2 1 2 2 2 1 1 2 2 2 1 1 1 1 1 1 1 2 2 2

衡量神经网络拟合数据的一个指标是混淆图。这里的混淆矩阵是在所有样本之间绘制的。

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

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

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

plotconfusion (testT暴躁的)

{

这里是正确和错误分类的总百分比。

[c,cm] =混淆(testT,testY)
C = 0.0333
厘米=2×212 10 0 17
流('正确分类百分比:%f%%\n', 100 * (1 - c));
正确分类:96.666667%
流('错误分类百分比:%f%%\n', 100 * c);
分类错误:3.333333%

另一个衡量神经网络拟合数据的指标是接收器工作特征图。这表明当输出的阈值从0到1变化时,假阳性率和真阳性率是如何关联的。

这条线越左越上,为了获得高的真阳性率,需要接受的假阳性就越少。最好的分类器会有一条从左下角到左上角,到右上角或接近右上角的线。

plotroc (testT暴躁的)

{

这个例子说明了如何使用神经网络对螃蟹进行分类。

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