matlab关于ann的分类方法讲解了一个例子,Fishr集上鸢尾花(Iris)的分类,学习了这个方法可以套用在个人项目上使用,万变不离其宗,

1、Fishr集上鸢尾花Iris数据集的分类
①iris数据集简介
iris数据集的中文名是安德森鸢尾花卉数据集,英文全称是Anderson’s Iris data set。iris包含150个样本,对应数据集的每行数据。每行数据包含每个样本的四个特征和样本的类别信息,所以iris数据集是一个150行5列的二维表。
通俗地说,iris数据集是用来给花做分类的数据集,每个样本包含了花萼长度、花萼宽度、花瓣长度、花瓣宽度四个特征(前4列),我们需要建立一个分类器,分类器可以通过样本的四个特征来判断样本属于山鸢尾、变色鸢尾还是维吉尼亚鸢尾(这三个名词都是花的品种)。
iris的每个样本都包含了品种信息,即目标属性(第5列,也叫target或label)。

样本局部截图:

load iris.dat

将数据集载入到工作区,部分数据集如图所示。数据集的前四列分别为与鸢尾花种类相关的4个特征值,对应上图中的花萼长度、花萼宽度、花瓣长度及花瓣宽度;第五列为鸢尾花所属种类,分为1-Setosa、2-Versicolour、3-Virginica三类。

②数据预处理
这里的神经网络属于监督学习的模式,因此需要从上述数据集中分离出训练集和测试集,我们分别记为trainData和testData。我们从iris数据集中选取2/3数据作为训练集trainData,选取1/3数据作为测试集testData,并分别将其保存至trainData.txt和testData.txt文件,用于程序的数据导入源,方法见另外一个博客(https://blog.csdn.net/qingfengxd1/article/details/105931988)

③分类源程序

%读取训练数据
clear
clc
%------本代码采用ANN对鸢尾花进行分类,程序运行前,请准备好#鸢尾花样本#的训练集和测试集(可在MATLAB中载入iris.dat查看数据)-----
%f1 f2 f3 f4是四个特征值
[f1,f2,f3,f4,class] = textread('trainData.txt' , '%f%f%f%f%f',150);
%特征值归一化
[input,minI,maxI] = premnmx( [f1 , f2 , f3 , f4 ]')  ;
%构造输出矩阵
s = length( class) ;
output = zeros( s , 3  ) ;
for i = 1 : s output( i , class( i )  ) = 1 ;
end
%创建神经网络
net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;
%{minmax(input):获取4个输入信号(存储在f1 f2 f3 f4中)的最大值和最小值;[10,3]:表示使用2层网络,第一层网络节点数为10,第二层网络节点数为3;{ 'logsig' 'purelin' }:表示每一层相应神经元的激活函数;即:第一层神经元的激活函数为logsig(线性函数),第二层为purelin(对数S形转移函数)'traingdx':表示学习规则采用的学习方法为traingdx(梯度下降自适应学习率训练函数)
%}
%设置训练參数
net.trainparam.show = 50 ;% 显示中间结果的周期
net.trainparam.epochs = 500 ;%最大迭代次数(学习次数)
net.trainparam.goal = 0.01 ;%神经网络训练的目标误差
net.trainParam.lr = 0.01 ;%学习速率(Learning rate)
%开始训练
%其中input为训练集的输入信号,对应output为训练集的输出结果
net = train( net, input , output' ) ;
%================================训练完成====================================%
%=============================接下来进行测试=================================%%读取测试数据
[t1 t2 t3 t4 c] = textread('testData.txt' , '%f%f%f%f%f',150);%测试数据归一化
testInput = tramnmx ( [t1,t2,t3,t4]' , minI, maxI ) ;
%[testInput,minI,maxI] = premnmx( [t1 , t2 , t3 , t4 ]')  ;
%仿真
%其中net为训练后得到的网络,返回的Y为
Y = sim( net , testInput ) %统计识别正确率
[s1 , s2] = size( Y ) ;
hitNum = 0 ;
for i = 1 : s2[m , Index] = max( Y( : ,  i ) ) ;if( Index  == c(i)   ) hitNum = hitNum + 1 ; end
end
sprintf('识别率是 %3.3f%%',100 * hitNum / s2 )

④代码的相关说明
A. 语句net = newff( minmax(input) , [10 3] , { 'logsig' 'purelin' } , 'traingdx' ) ;用于创建神经网络,其参数含义和用法如下:

(1)minmax(input):获取4个输入信号(存储在f1 f2 f3 f4中)的最大值和最小值;
    (2) [10,3]:表示使用2层网络,第一层网络节点数为10,第二层网络节点数为3。其中最后一层的网络包含的节点数一定要与网络的理论输出个数保持一致,例如本例中鸢尾花的种类数为3,因此最后一层的网络节点数为3;
    (3){ 'logsig' 'purelin' }:表示每一层相应神经元的激活函数,即:第一层神经元的激活函数为logsig(线性函数),第二层为purelin(对数S形转移函数),其他激活函数和用法请参见神经网络与深度学习之激活函数;
    (4) 'traingdx':表示学习规则采用的学习方法为traingdx(梯度下降自适应学习率训练函数)。常见的训练函数(学习方法)有:

traingd :梯度下降BP训练函数(Gradient descent backpropagation)
  traingdx :梯度下降自适应学习率训练函数

(5)创建的神经网络用MATLAB神经网络工具箱显示如图,图中更形象的展示了构造的神经网络模型。

B. 关于正确率的统计算法的说明

第一次看到这里的正确率统计算法时,我自己是不大明白的,之后又从网上搜了一些资料并查阅了MATLAB的帮助文档,才明白代码的含义。

语句net = train( net, input , output' ) ;是对网络进行训练,该语句明确了网络的输出为output,通过对output矩阵的构造方式分析,我们可知网络的输出可以看成3个,我们不妨即为C1、C2、C3,分别代表鸢尾花的三个种类,例如:

(1)当output的某一行为1 0 0,则说明该花属于C1类

(2)当output的某一行为0 1 0,则说明该花属于C2类

(3)当output的某一行为0 1 0,则说明该花属于C3类

语句Y = sim( net , testInput ) 是对训练后的网络net进行仿真测试,测试用的数据为testInput;这里,Y返回的是网络训练后对测试输入的预测值,例如:

(1)当Y的某一行为1.0220  -0.0020  -0.0091,代表输出结果C1=1.0220, 输出结果C2=-0.0020,C3=-0.0091

(2)当Y的某一行为-0.0108  0.9884  -0.0216,代表输出结果C1=-0.0108,输出结果C2=0.9884,C3=-0.0216

输出结果中只包含一个1和两个0是理想情况下的结果,在进行仿真时,分类输出往往达不到这样的结果,但我们可以根据哪个结果对应的值与1的接近程度来进行判断,例如仿真结果(1)说明该花极有可能属于C1类,仿真结果(2)说明该花极有可能属于C2类。

*从以上描述中我们可以明白神经网络算法也可以应用于具体数值的预测,且应用广泛。

matlab 神经网络ann用于分类方法相关推荐

  1. 基于RBF神经网络的信用分类方法

    简要介绍金融数据挖掘,RBF神经网络.提出基于RBF神经网络的信用分类的一种方法.此方法可根据客户提供的烦多而复杂的资料数据来评估客户信用的好坏.发挥RBF神经网络模拟生物体中神经网络的某些结构和功能 ...

  2. matlab 神经网络 ANN 分类

    1.内容简介 略 500-可以交流.咨询.答疑 2.内容说明 clear clc close all %% import and deal data filename = "DAY 1-DA ...

  3. 基于神经网络的文本分类(基于Pytorch实现)

    <Convolutional Neural Networks for Sentence Classification> 作者:Yoon Kim 单位:New York University ...

  4. 【图神经网络】图分类学习研究综述[2]:基于图神经网络的图分类

    基于GNN的图分类学习研究综述[2]:基于图神经网络的图分类 论文阅读:基于GNN的图分类学习研究综述 3. 基于图神经网络的图分类 3.1 卷积 3.2 池化 论文阅读:基于GNN的图分类学习研究综 ...

  5. ann matlab,人工神经网络ann及其matlab仿真.ppt

    人工神经网络ann及其matlab仿真 人工神经网络 的研究方法及应用刘 长 安2004. 12. 31 引 言 利用机器模仿人类的智能是长期以来人们认识自然.改造自然和认识自身的理想. 研究ANN目 ...

  6. Python实现BP神经网络ANN单隐层分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 BP(back propagation)神经网络是1986年由R ...

  7. 基于深度神经网络的高光谱影响分类方法研究---MNF+自动编码器+Softmax (准确率比较低,17年的论文)

    论文地址 基于深度神经网络的高光谱影响分类方法研究 装备学院学报 遥感影像分类的问题:预处理复杂,高维特征提取困难,分类不够精确等缺陷 首先采用最大噪声分数来降低特征空间维度,然后将自动编码器与sof ...

  8. Python基于PyTorch实现BP神经网络ANN分类模型项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 在人工神经网络的发展历史上,感知机(Multilayer Per ...

  9. 脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法

    原文链接:CSDN-脉冲神经网络(SNN)论文阅读(三)-----高精度低时延的ANN转换SNN方法 Optimal ANN-SNN Conversion for High-accuracy and ...

最新文章

  1. 基于深度学习神经网络等机器学习技术实现一个医学辅助诊断的专家系统原型
  2. Unity游戏暂停之Update与FixedUpdate区别
  3. mysql 建立联合索引
  4. 面试java回答优缺点_阿里Java开发面经分享,面试题(附回答)
  5. sqoop简介与安装配置
  6. 什么是转向灯?使用转向灯有何技巧?
  7. c++上传oss中文路径报错_C# 从Oss对象存储器上下载文件到本地打包下载代码
  8. Ubuntu下映射串口设备到docker
  9. 控制层SpringMVC和Struts2的区别
  10. Linux--进程组 作业 会话 守护(精灵)进程
  11. 深度 ghost xp3 装IIS 方法
  12. vue 动态背景图片
  13. 浅谈大型互联网的企业入/侵及防护策略
  14. 蓝牙耳机南卡和vivo哪个好用?南卡与vivo实际评测!
  15. php fpm 错误日志在哪,php fpm如何开启错误日志
  16. html5 游戏 动画设计,11款效果惊艳的HTML5动画应用
  17. cpu集成显卡性能排行(独立显卡和集成显卡哪个更好)
  18. 选对池塘钓大鱼([美]雷恩·吉尔森)第四章 想钓什么鱼?发现自己内在的需求...
  19. vant输入表单右侧加单位
  20. 淮北师范大学的计算机类怎么分专业,2018淮北师范大学专业排名及分数线 王牌专业有哪些...

热门文章

  1. c语言 二级菜单_收下计算机二级秘笈,考场上说好不哭!
  2. Matplotlib-动态更新图表
  3. 如何通俗地理解 Gradle?
  4. Linux下NDK的安装配置
  5. A Step By Step Guide to Tomcat Performance Monitoring【转】
  6. 使用Skywalking实现全链路监
  7. 由浅入深区块链技术,程序员不得不看的十篇好文
  8. Java多线程编程那些事:volatile解惑--转
  9. 分布式服务化系统一致性的“最佳实干”--转
  10. linux 管道--转