BP网络实例(Iris数据)
Posted Mr.H
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了BP网络实例(Iris数据)相关的知识,希望对你有一定的参考价值。
将Iris数据分成训练与测试两部分,这批Iris花可分为3个品种,分别用123代表,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。我们现有一批已知品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度的数据。
数据来自http://en.wikipedia.org/wiki/Iris_flower_data_set
大致流程:
读取训练数据→归一化→构造期望输出矩阵(01矩阵)→创建神经网络并设置参数→通过输入与期望输出值训
练→读取测试数据并归一化→仿真
clc [f1,f2,f3,f4,class]=textread(\'flodata.txt\',\'%f%f%f%f%f\',\'delimiter\',\',\');%种类用123分别代表三种 [input,mini,maxi]=premnmx([f1,f2,f3,f4]\');%归一化 %构造输出矩阵 s=length(class); output=zeros(s,3); for i=1:s output(i,class(i))=1;%对于每行的三个数,只有该种类为1,其他为0 end %创建神经网络 net=newff(minmax(input),[10 3],{\'logsig\' \'purelin\'},\'traingdx\');%minmax求解矩阵每行的最小最大值 %设置训练参数 net.trainparam.show = 50 ; net.trainparam.epochs = 500 ; net.trainparam.goal = 0.01 ; net.trainParam.lr = 0.01 ; %开始训练 net=train(net,input,output\'); %读取测试数据并归一化 [t1,t2,t3,t4,c]=textread(\'textdata.txt\',\'%f%f%f%f%f\',\'delimiter\',\',\'); textinput=tramnmx([t1,t2,t3,t4]\',mini,maxi); %仿真 Y=sim(net,textinput); %统计识别正确率 [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 )
隐层设计
对于隐层中神经元数目的确定并没有明确的公式, 只有一些经验公式, 神经元个数的最终确定还是需要根据经验和多次实验来确定。本文在选取隐层神经元个数的问题上参照了以下的经验公式:
其中, n为输入层神经元个数, m 为输出层神经元个数, a 为[ 1, 10]之间的常数。
以上是关于BP网络实例(Iris数据)的主要内容,如果未能解决你的问题,请参考以下文章
pytorch神经网络对Excel数据集进行处理(读取,转为tensor格式,归一化),并且以鸢尾花(iris)数据集为例,实现BP神经网络
BP神经网络训练自己的数据(Tensorflow2.x版本)
BP神经网络训练自己的数据(Tensorflow2.x版本)