主要内容

葡萄酒的分级

该示例说明了模式识别神经网络如何通过基于其化学特性通过酿酒厂对葡萄酒进行分类。

问题:分类葡萄酒

在这个例子中,我们试图建立可以是十个三个属性从三个酒庄的葡萄酒分类神经网络:

  • 酒精

  • 苹果酸

  • 灰分的碱度

  • 总酚类

  • 黄酮类化合物

  • Nonflavonoid酚类

  • 原花青素

  • 颜色强度

  • 色调

  • OD280 / OD315的稀释葡萄酒

  • 脯氨酸

这是一个模式识别问题,其中输入与不同类别相关联的一个例子,我们想建立一个神经网络,不仅进行分类的已知葡萄酒正常,但也可以推广到了未用于设计准确分类的葡萄酒解决方案。

为什么神经网络?

神经网络是在模式识别问题非常好。使用足够的元素的神经网络(称为神经元)可以与任意精度任何数据进行分类。它们特别适用于在许多变量的复杂决策边界问题。因此,神经网络是解决葡萄酒的分级问题一个很好的候选人。

十三个邻域属性将充当神经网络的输入,并且每个目标的各个目标将是3元类等级矢量,其中相关奖金的位置,#1,#2或#3的位置。

该网络将通过使用社区的属性,以训练网络产生正确的目标类进行设计。

准备数据

对于分类问题数据都设置了一个神经网络通过组织数据转换成两个矩阵,输入矩阵X和目标矩阵T.

输入矩阵的每个第i个列将具有表示葡萄酒已经已知的葡萄酒的十三个元素。

目标矩阵的每个相应列将具有三个元素,由两个零和相关的酿酒厂的位置组成。

这里加载了这样的数据集。

[X,T] = wine_dataset;

我们可以查看输入x和目标t的大小。

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

输入矩阵X有十三行,为十个三个属性。目标矩阵T具有三排,对于每个实施例,我们有三种可能的酿酒厂。

大小(x)的
ans =.1×213 178.
尺寸(t)
ans =.1×23 178.

与神经网络的模式识别

下一步是创建一个用于分类葡萄酒的神经网络。

由于神经网络从随机初始权重开始,因此每次运行时,此示例的结果都会略有不同。

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

我们将尝试10元的单隐层的这个例子。在一般情况下,更加困难的问题需要更多的神经,也许更多的层。简单的问题需要较少的神经元。

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

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

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

神经网络的训练工具显示网络被训练和算法用来训练它。它还训练过程中显示训练状态并停止训练的标准将以绿色高亮显示。

在此期间可以和训练后,打开底部开有用地块的按钮。旁边的算法名称和情节按钮就这些议题进行开放文档链接。

[NET,TR] =火车(网,X,T);nntraintool nntraintool('关闭'

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

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

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

PlotPerform(TR)

数字性能(PlotPerForm)包含轴。具有标题最佳验证性能的轴在EPOCH 4处为0.072181包含6个类型的类型。这些对象代表火车,验证,测试,最好。

测试网络

现在可以相对于测试样本测量培训的神经网络的平均平方误差。这将使我们在从现实世界应用于数据时,网络将如何做好。

网络输出将在范围0到1,所以我们可以使用vec2ind函数来获得类索引作为每个输出矢量的最高元件的位置。

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

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

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

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

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

plotconfusion(testT,暴躁)

图混乱(plotconfusion)包含一个轴。与标题混淆矩阵的轴包含型贴剂,文本,线的50个对象。

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

并[c,厘米] =混乱(testT,暴躁)
C = 0
厘米=3×37 0 0 0 12 0 0 0 8
fprintf('百分比正确分类:%f %% \ n',100 *(1-c));
百分比正确分类:100.000000%
fprintf('百分比不正确分类:%f %% \ n',100 * c);
百分比不正确的分类:0.000000%

的神经网络如何阱具有拟合数据的第三个量度是受试者工作特征曲线图。这显示了假阳性和真阳性率如何与作为输出的阈值是从0到1变化。

更远的离开,上了线,越少误报需要,以获得较高的真阳性率被接受。最好的分类将有一条线从左下角走,到左上角,在右上角,或接近。

Plotroc(Testt,Testy)

图接受者操作特征(plotroc)包含一个轴。与标题ROC轴包含类型的线6级的对象。这些对象表示第1类,2类,3类。

这个例子说明如何设计神经网络进行分类葡萄酒到每个葡萄酒的的三座酒庄。

探索其他示例和文档,以了解内部网络及其应用程序的更多洞察力。