主要内容

螃蟹分类

这个示例说明了使用神经网络作为分类器,以识别蟹物理尺寸的螃蟹性别。

问题:螃蟹的分类

在此示例中,我们试图构建一个可以从螃蟹的物理测量中识别性别的分类器。考虑了螃蟹的六个物理特征:物种,额叶,后宽,长度,宽度和深度。手头的问题是鉴于这6种物理特征的每个观察值,鉴定蟹的性别。

为什么要神经网络?

神经网络已证明自己是熟练的分类器,并且特别适合解决非线性问题。鉴于现实世界现象的非线性性质,例如螃蟹分类,神经网络无疑是解决该问题的好候选者。

六个物理特征将充当神经网络的输入,而螃蟹的性别将成为目标。鉴于输入构成了螃蟹的物理特征的六个观察值,因此,神经网络有望确定螃蟹是雄性还是雌性。

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

准备数据

通过将数据组织成两个矩阵,即输入矩阵X和目标矩阵T,为神经网络设置了分类问题的数据。

输入矩阵的每个ITH色谱柱都将具有六个代表螃蟹物种的元素,即前宽,后宽,长度,宽度和深度。

目标矩阵的每个相应列将具有两个元素。雌性螃蟹在第一个元素中以一个雄性螃蟹为代表,第二个元素中有一个。(所有其他元素均为零)。

在这里,数据集已加载。

[x,t] = crab_dataset;尺寸(x)尺寸(t)
ANS = 6 200 ANS = 2 200

构建神经网络分类器

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

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

setDemorandStream(491218382)

两层(即单层)馈电神经网络可以学习隐藏层中足够的神经元的任何输入输出关系。非输出层的图层称为隐藏层。

在此示例中,我们将尝试一个10个神经元的隐藏层。通常,更困难的问题需要更多的神经元,甚至需要更多的层。简单的问题需要更少的神经元。

输入和输出尺寸为0,因为尚未配置网络以匹配我们的输入和目标数据。当网络训练时,这将发生。

net = patternnet(10);查看(网)

现在,该网络已准备好接受培训。样品自动分为培训,验证和测试集。培训集用于教授网络。只要网络继续改善验证集,培训就会继续。该测试集提供了网络准确性的完全独立的度量。

[net,tr] =火车(net,x,t);nntraintool

nntraintool('关闭'

要查看网络在培训期间的性能如何改善,请单击培训工具中的“性能”按钮,或致电PlotPerform。

性能是根据平方误差来衡量的,并以日志刻度显示。随着网络的训练,它迅速下降。

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

PlotPerform(TR)

测试分类器

现在可以通过测试样品对训练有素的神经网络进行测试。这将使我们了解网络应用于现实世界的数据时的状况。

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

testx = x(:,tr.testind);testt = t(:,tr.testind);testy = net(testx);testindices = vec2ind(testy)
testIndices =列1至13 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1列14至26 1 2 2 2 2 2 2 2 1 2 1 2 1 1 1 1 1 1 1 1 1 1 1列27至30 1 2 2 2 1

神经网络对数据的满足程度的一种量度是混乱图。在这里,混淆矩阵在所有样品中绘制。

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

如果网络学会了正确的分类,则红色正方形中的百分比应该很小,表明很少发生错误分类。

如果不是这种情况,那么建议进一步培训或培训具有更多隐藏神经元的网络。

plotConfusion(testt,testy)

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

[c,cm] =混乱(testt,testy)fprintf('百分比正确分类:%f %% \ n',100*(1-C));fprintf('百分比不正确分类:%f %% \ n',100*c);
C = 0.0333 cm = 12 1 0 17百分比正确分类:96.666667%百分比不正确分类:3.3333333%

神经网络具有拟合数据的另一个衡量标准是接收器操作特征图。这显示了假阳性和真实的正速率如何相关,因为输出的阈值在0到1之间变化。

左上到线的距离越远,需要接受较少的误报才能获得高真正的正率。最好的分类器将有一条从左下角,左上角,右上角或靠近的线路。

PlotRoc(testt,testy)

此示例使用神经网络进行了分类。

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