主要内容

葡萄酒分类

这个例子说明了模式识别神经网络如何根据葡萄酒的化学特征对葡萄酒进行分类。

问题:对葡萄酒进行分类

在此示例中,我们尝试构建一个神经网络,可以通过十三个属性从三个葡萄酒厂对葡萄酒分类:

  • 酒精

  • 苹果酸

  • 灰色的碱度

  • 总酚类化合物

  • 黄酮类化合物

  • 非氟烷酚酚

  • 原花青素

  • 颜色强度

  • 色调

  • 稀释葡萄酒的OD280/OD315

  • 脯氨酸

这是模式识别问题的示例,其中输入与不同的类相关联,我们希望创建一个神经网络,不仅可以正确对已知的葡萄酒进行分类,而且可以概括为准确地分类不用于设计的葡萄酒解决方案。

神经网络的原因吗?

神经网络非常擅长模式识别问题。具有足够元素(称为神经元)的神经网络可以将任何具有任意精度的数据分类。它们特别适用于许多变量的复杂决策边界问题。因此,神经网络是解决葡萄酒分类问题的良好候选者。

这13个邻域属性将作为神经网络的输入,每个邻域属性的目标将是一个3元素的类向量,在关联的酒厂#1,#2或#3的位置上有一个1。

网络将通过使用邻域的属性来培训网络来生成正确的目标类。

准备数据

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

输入矩阵的每第i列都有13个元素,它们代表的葡萄酒的酿酒厂是已知的。

目标矩阵的每一列都有三个元素,其中两个0和一个1位于相关联的酒厂的位置。

这里加载了这样一个数据集。

[x,t] = wine_dataset;

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

注意,X和T都有178列。这代表了178个葡萄酒样本属性(输入)和相关的酒庄类向量(目标)。

输入矩阵x有十三个属性的十三个行。目标矩阵T有三行,对于每个示例我们有三个可能的葡萄酒厂。

尺寸(x)
ans =1×2178年13
大小(t)
ans =1×23 178

基于神经网络的模式识别

下一步是建立一个神经网络来学习对葡萄酒进行分类。

由于神经网络的初始权值是随机的,所以每次运行时,结果都会略有不同。

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

我们将尝试为此示例的10个神经元的单个隐藏层。通常,更困难的问题需要更多的神经元,也许更多层。更简单的问题需要较少的神经元。

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

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

现在网络已准备好培训。样本自动分为培训,验证和测试集。培训集用于教导网络。只要网络继续改善验证集即可继续培训。测试集提供了完全独立的网络精度度量。

神经网络培训工具显示正在接受培训的网络和用于训练它的算法。它还在培训期间显示培训州,并在绿色中突出显示培训的标准。

底部的按钮可在培训期间和之后打开的有用图。算法名称旁边的链接和绘图按钮在这些主题上打开文档。

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

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

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

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

plotperform (tr)

测试网络

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

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

testX = x (:, tr.testInd);testT = t (:, tr.testInd);暴躁的=净(testX);testIndices = vec2ind(暴躁的)
testIndices =1×271 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 3 3 3 3 3 3 3 3 3

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

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

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

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

plotconfusion(Testt,Testy)

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

[c,cm] =混乱(testt,esty)
C = 0.
cm =3×37 0 0 11 0 0 0 9
fprintf('正确分类百分比:%f%%\n', 100 * (1 - c));
百分比正确分类:100.000000%
fprintf('百分比错误分类:%f%%\n', 100 * c);
百分比不正确分类:0.000000%

神经网络如何具有拟合数据的第三次数是接收器操作特征图。这表明如何在输出的阈值下变化为0到1时如何与输出的阈值相同。

左侧和左上方的左侧和上升得更远,需要接受较少的误报,以获得高真正的阳性率。最好的分类器将有一条从左下角到左上角到右上角的线,或接近左上角。

plotroc (testT暴躁的)

这个例子说明了如何设计一个神经网络,将葡萄酒分为三个葡萄酒厂的特征。

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