一个神经网络模式识别的例子------螃蟹识别
来源:互联网 发布:网络校时原理 编辑:程序博客网 时间:2024/04/28 13:08
模式识别主要解决分类问题,由于分类问题的输出是离散的,而曲线拟合的输出是连续的,因此分类问题的解决方案会与曲线拟合问题的解决方案存在一些差异。
差异关键在于输出:
在神经网络模式识别中,我们不会以 1 2 3 4 5..这样的序列号来表示我们的输出,一般会用 0 1向量来表示输出。例如一共有三个种类,则 用[0 1 0 ]表示它属于第二类。
特 别注意:模式识别中不用 1 2 3…12这样的序列作为网络的输出,是因为类别与类别之间并不存在数量的大小关系,直接把类别标为1 2 3 ..12的话,计算误差时会受1 2 3 ..12的数量大小关系的影响。例如一个属于类别10的样本在网络中被预测为类别2的时候,会被认为误差很大,而它输出9的时候会被认为误差比较小,实际 上输出9和输出2都是完全判断错误的,但会导致网络误差估计不准确,影响网络的训练
模式识别可以用通用的神经网络来建立,但matlab神经网络工具箱提供专门的模式识别神经网络模型Patternnet来处理这类问题。
Patternnet网络的拓扑大概如下图:
Patternnet与标准的神经网络不同之处在于,网络的输出层传递函数不是purelin,而是tansig,而且输出会归一到[0,1]。另一方面,matlab采取的默认训练函数也不一样,用的是量化共轭梯度法trainscg.
2012B版本中自带螃蟹识别例子R2012b\toolbox\nnet\nndemos\classify_crab_demo.m是一个很好的学习神经网络模式识别的例子,输入输出数据截图如下:
下面是作者简化改编后的代码:
%神经网络之家 2015-9-21
%请在2012B运行,其它版本的matlab未确定是否能够顺利运行。
load crab_dataset
x = crabInputs;
t = crabTargets;
setdemorandstream(491218382);%指定随机种子,这样每次训练出来的网络都一样。
net = patternnet(10); %建立模式识别网络,隐层设为10个
[net,tr] = train(net,x,t); %将数据放到网络中训练
plotperform(tr) %画出训练记录
%%用检验数据检验网络的正确率
testX = x(:,tr.testInd);
testT = t(:,tr.testInd);
testY = net(testX);
testIndices = vec2ind(testY);
%% 画出混淆矩阵,并计算正确率
plotconfusion(testT,testY)
[c,cm] = confusion(testT,testY) %计算混淆矩阵
fprintf('Percentage Correct Classification : %f%%\n', 100*(1-c));
fprintf('Percentage Incorrect Classification : %f%%\n', 100*c);
figure
plotroc(testT,testY)
运行程序后可以得到训练好的net,
假如输入是X=[1 2 5 8 10 12]’;
可以使用Y=net(X);
来得到形如Y=[0 1]格式的输出,这样就知道它是第2类。
提示:可借助vec2ind函数将 [0 1 ] 转为数字2.
至于怎么提取网络的表达式,和网络的使用,在这里不再重复讲述。请有兴趣的同学参考其它文章。
值得一提的是运行后得到的混淆矩阵,这里加上我的注解。
从混淆矩阵图中清晰看到分类的效果。
本例数据与程序下载:一个神经网络模式识别的例子------螃蟹识别代码
- 一个神经网络模式识别的例子------螃蟹识别
- 一个简单的神经网络例子
- 一个语音识别的例子
- 神经网络算法的一个简单例子
- 模糊神经网络PID控制的一个例子
- 一个Nuance 的语音识别的例子
- 一个Nuance 的语音识别的例子
- 基于神经网络ZISC的模式识别系统
- 神经网络 手写识别例子 matlab实现
- 模式识别--图像识别技术的核心
- 模式识别或行为识别存在的问题
- 用简单的一个例子阐释人工神经网络的机理
- Matlab一个利用神经网络拟合函数的例子
- 捡到的螃蟹
- 吃螃蟹的乐趣
- 吃螃蟹的乐趣
- 第四章 模式识别-神经网络
- SOM神经网络进行模式识别
- CoordinatorLayout与滚动的处理
- Using Arel to Compose SQL Queries
- ELKStack编码插件(Codec)
- 数据库性能优化主要包括哪些方面?
- Android Studio解决unspecified on project app resolves to an APK archive which is not supported
- 一个神经网络模式识别的例子------螃蟹识别
- cardview使用笔记
- 第一章 基本语法-2运算符
- 听说网易用户信息泄露了?
- 【算法】数组中的逆序对的总数
- 2015网页导航设计趋势&案例大搜罗
- Spark学习笔记之-Spark 命令及程序入口
- SVN与CVS比较
- 禁止Apache显示目录索引