1、华南师范大学计算机学院 神经网络作者:杨劲松2013-4-24鸢尾花分类鸢尾花分类BPBP网实现网实现2/202013-4-24鸢尾花分类鸢尾花分类BPBPBPBP网实现网实现 问题描述 感知器网络 BP网 用BP网实现鸢尾花分类问题3/202013-4-24问题描述问题描述鸢尾花分类问题Fishers Iris Data Sepal length Sepal width Petal length Petal width Specieslength Sepal width Petal length Petal width Specieslength Sepal width Petal leng
2、th Petal width Specieslength Sepal width Petal length Petal width Species 5.1 3.5 1.4 0.2 setosa 7.0 3.2 4.7 1.4 versicolor 6.3 3.3 6.0 2.5 virginica 有一批Iris花,已知这批Iris花可分为3个品种,现需要对其进行分类。不同品种的Iris花的花萼长度、花萼宽度、花瓣长度、花瓣宽度会有差异。4/202013-4-24感知器网络感知器网络感知器的结构加权输入:感知器网络简化结构图=+=rjijijibpwn1输出:)(iinfa=5/202013-
3、4-24感知器网络感知器网络感知器的学习有教师的学习有教师学习算法将一组训练集 送入网络,根据网络的实际输出与期望输出间的差别来调整连接权。有导师学习算法的主要步骤包括:1)从样本集合中取一个样本(Ai,Bi);2)计算网络的实际输出O;3)求D=Bi-O;4)根据D调整权值W和阈值b;5)对每个样本重复上述过程,直到对整个样本集来说,误差不超过规定范围。6/202013-4-24感知器网络感知器网络感知器的学习有教师的学习(规则)ate=目标输出目标输出实际输出实际输出训练目的:t-a 当e=0时,得到最优网络权值和阈值 当e0时,实际输出小于目标输出,应增加网络权值和阈值 当e0时,实际输
4、出大于目标输出,应减少网络权值和阈值7/202013-4-24BPBPBPBP网网 BP网反向传播网络(back propagation network)单层感知器网络只有一层神经元,简单,处理线性问题BP网络有多层神经元,复杂,非线性问题x x x x1 1 1 1o o o o1 1 1 1输出层输出层隐藏层隐藏层输入层输入层x x x x2 2 2 2o o o o2 2 2 2o o o ommmmx x x xn n n nWWWW(1)(1)(1)(1)WWWW(2)(2)(2)(2)WWWW(3)(3)(3)(3)WWWW(L)(L)(L)(L)BP网结构8/202013-4-2
5、4BPBPBPBP网网 BP网结构9/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题要做的工作:a)建立一个BP网络c)使用新的数据集模拟这个网络b)使用样本训练这个网络10/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题要做的工作:a)建立一个BP网络网络层数每层的神经元数每层使用的转移函数使用的训练函数11/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题 net=newff(PR,S,TF,BTF,BLF,PF,IPF,OPF,DDF)matlab提供newff函数用于创建一个BP网
6、络每组输入向量的最大和最小值每组输入向量的最大和最小值每层神经元的个数每层神经元的个数每层使用转移函数每层使用转移函数训练函数训练函数 BLF-权值和阈值学习函数,默认为learngdm.PF -网络性能函数,默认为 mse.IPF-行输入处理单元矩阵 OPF-行输出处理单元矩阵 DDF-数据分割函数,默认为dividerand;示例:net=newff(minmax(input),10 3,logsig purelin ,traingdx);12/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题训练样本读取训练数据f1,f2,f3,f4,class=text
7、read(trainData.txt,%f%f%f%f%f,150);训练神经网络net=train(net,input,output);13/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题检验网络读取测试数据t1 t2 t3 t4 c=textread(testData.txt,%f%f%f%f%f,150);模拟神经网络Y=sim(net,testInput)14/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题%读取训练数据f1,f2,f3,f4,class=textread(trainData.txt,%f%f%f%
8、f%f,150);%特征值归一化input,PS=mapminmax(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);%设置训练参数net.trainparam.show=50;%显示中间结果的周期net.trainparam.epochs=500;%最大迭代次数net.trainparam.goal=0.01;%神经网络训练的目标误差net.tr
9、ainParam.lr=0.01;%学习率15/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题%开始训练net=train(net,input,output);%读取测试数据t1 t2 t3 t4 c=textread(testData.txt,%f%f%f%f%f,150);%测试数据归一化testInput=mapminmax(t1,t2,t3,t4);%仿真Y=sim(net,testInput);%统计识别正确率s1,s2=size(Y);hitNum=0;for i=1:s2m,Index=max(Y(:,i);if(Index=c(i)hitNu
10、m=hitNum+1;endendsprintf(识别率是%3.3f%,100*hitNum/s2)16/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题网络未经训练时的输出(隐层:100,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 8.000%)8.000%)8.000%)8.000%)17/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题训练后的训练样本输出(隐层:100,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 100.000%)100.000%)
11、100.000%)100.000%)18/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题训练后的测试样本输出(隐层:100,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 94.667%)94.667%)94.667%)94.667%)19/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题 一个隐层(隐层:100,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 93.333%)93.333%)93.333%)93.333%)两个隐层(隐层:20,20,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 96.000%)96.000%)96.000%)96.000%)20/202013-4-24用用BPBPBPBP网实现鸢尾花分类问题网实现鸢尾花分类问题 一个隐层(隐层:100,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 96.000%)96.000%)96.000%)96.000%)两个隐层(隐层:20,20,输出层:3)输出图示输出图示输出图示输出图示(识别率是识别率是识别率是识别率是 96.000%)96.000%)96.000%)96.000%)
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1