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]之间的常数。 

转载于:https://www.cnblogs.com/litthorse/p/6682855.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值