• Matlab神经网络工具箱学习之二


    螃蟹的分类

    这个例子的目的是根据螃蟹的品种、背壳的长宽等等属性来判断螃蟹的性别,雄性还是雌性。

    训练数据一共有六个属性:

      species, frontallip, rearwidth, length, width and depth.

    这里每个属性所对应的是螃蟹哪一部分的真实性状并不是关键。我们关心的只是已知样本是6维的向量,输出是0/1值,

    求分类效果最好的网络模型。

    首先载入样本数据

    [x,t] = crab_dataset;
    % size(x) = [6, 200];
    % size(t) = [2, 200];

    然后初始化神经网络

    例子里使用含有一层隐含层的模型,隐含层有10个神经元。调用Matlab的patternnet()函数。

    net = patternnet(10);
    view(net)
    ----------------------------

    patternnet()函数的参数有(hiddenSizes,trainFcn,performFcn)三个。hiddenSizes默认值是10,可以用数组表示多个隐含层。trainFcn默认值是'trainscg',Performance function默认值是'crossentropy'。如果想要有两个隐含层,每层的神经元都是10个,则可以写成

    net = patternnet([10,10]);

    接下去是训练网络。把网络模型、训练样本和测试样本作为参数传入train()函数。系统自动将数据分为training和validation.

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

    可以在窗口点击Performance或者调用PLOTPERFORM查看训练的过程。

    plotperform(tr)
    ------------------------

    测试分类器

    testX = x(:,tr.testInd);
    testT = t(:,tr.testInd);
    
    testY = net(testX);
    testIndices = vec2ind(testY);

    plotconfusion(testT,testY);

    下图表示的是分类器的效果。绿色表示分类器的分类结果和测试数据的label一致,红色表示两者结果不一致。红色区域内的百分数越小,说明分类器结果的误差越小,分类结果越好。如果误差过大,则需要增加样本进再行训练或者增加隐含层的神经元个数。

  • 相关阅读:
    Mvc自定义HtmlHelper
    Mvc动作过滤器
    UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
    移动UIButton
    UIControlEventTouchEnter
    objective 修改plist文件
    单例模式笔记
    IOS开发之深拷贝与浅拷贝(mutableCopy与Copy)详解
    UINavgationController一些使用技巧
    cocos2d 学习笔记
  • 原文地址:https://www.cnblogs.com/naive/p/3579605.html
Copyright © 2020-2023  润新知