实验一报告实验一--基于感知器的线性分类器设计.doc_第1页
实验一报告实验一--基于感知器的线性分类器设计.doc_第2页
实验一报告实验一--基于感知器的线性分类器设计.doc_第3页
实验一报告实验一--基于感知器的线性分类器设计.doc_第4页
实验一报告实验一--基于感知器的线性分类器设计.doc_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

北华大学开放实验报告实验名称:实验一 基于感知器的线性分类器设计所属课程: 模式识别 班 级: 信息101 学 号: 36 姓 名: 张慧 实验一、基于感知器算法的线性分类器设计一、 实验目的:1. 熟悉感知器算法。2. 掌握感知准则函数分类器设计方法。3. 掌握感知器算法,利用它对输入的数据进行分类。二、 实验原理: 感知机算法线性分类器的第一个迭代算法是1956年由Frank Rosenblatt提出的,即具有自学习能力的感知器(Perceptron)神经网络模型,用来模拟动物或者人脑的感知和学习能力。这个算法被提出后,受到了很大的关注。感知器在神经网络发展的历史上占据着特殊的位置:它是第一个从算法上完整描述的神经网络,是一种具有分层神经网络结构、神经元之间有自适应权相连接的神经网络的一个基本网络。感知器的学习过程是不断改变权向量的输入,更新结构中的可变参数,最后实现在有限次迭代之后的收敛。感知器的基本模型结构如图1所示:图1 感知器基本模型其中,X输入,Xi表示的是第i个输入;Y表示输出;W表示权向量;w0是阈值,f是一个阶跃函数。感知器实现样本的线性分类主要过程是:特征向量的元素x1,x2,xk是网络的输入元素,每一个元素与相应的权wi相乘。,乘积相加后再与阈值w0相加,结果通过f函数执行激活功能,f为系统的激活函数。因为f是一个阶跃函数,故当自变量小于0时,f= -1;当自变量大于0时,f= 1。这样,根据输出信号Y,把相应的特征向量分到为两类。然而,权向量w并不是一个已知的参数,故感知器算法很重要的一个步骤即是寻找一个合理的决策超平面。故设这个超平面为w,满足:(1)引入一个代价函数,定义为:(2)其中,Y是权向量w定义的超平面错误分类的训练向量的子集。变量定义为:当时,= -1;当时,= +1。显然,J(w)0。当代价函数J(w)达到最小值0时,所有的训练向量分类都全部正确。为了计算代价函数的最小迭代值,可以采用梯度下降法设计迭代算法,即:(3)其中,w(n)是第n次迭代的权向量,有多种取值方法,在本设计中采用固定非负值。由J(w)的定义,可以进一步简化(3)得到:(4)通过(4)来不断更新w,这种算法就称为感知器算法(perceptron algorithm)。可以证明,这种算法在经过有限次迭代之后是收敛的,也就是说,根据(4)规则修正权向量w,可以让所有的特征向量都正确分类。采用感知器算法实现data1.m的数据分类流程如图2所示:图2 单层感知器算法程序流程三、 实验内容1.获得增广样本向量和初始增广权向量2.对样本进行规范化处理3.获得解区,并用权向量迭代修正错分样本集,得到最终解区四、实验程序function Per1()clear all;close all; DATA=xlsread(zb0708.xls); for i=1:45 x1(i,1)=DATA(i,1) x1(i,2)=DATA(i,2)endfor i=1:55 x2(i,1)=DATA(i,3) x2(i,2)=DATA(i,4)end for i=1:45 r1(i)=x1(i,1);end;for i=1:45 r2(i)=x1(i,2);end;for i=1:55 r3(i)=x2(i,1);end;for i=1:55 r4(i)=x2(i,2);end; figure(1);plot(r1,r2,*,r3,r4,o); hold on;%保持当前的轴和图像不被刷新,在该图上接着绘制下一图 x1(:,3) = 1;% 考虑到不经过原点的超平面,对x进行扩维x2(:,3) = 1;% 使x=x 1,x为2维的,故加1扩为3维 %进行初始化w = rand(3,1);% 随机给选择向量,生成一个3维列向量 419.4813 -719.9205 -247.3682p = 1; %p0非负正实数ox1 = -1;% 代价函数中的变量ox2 = 1;% 当x属于w1时为-1,当x属于w2时为1s = 1;% 标识符,当s=0时,表示迭代终止n = 0;% 表示迭代的次数w1 = 0;0;0; while s %开始迭代 J = 0; %假设初始的分类全部正确 j = 0;0;0; %j=ox*x for i = 1:45 if (x1(i,:)*w)0 %查看x1分类是否错误,在x属于w1却被错误分类的情况下,wx0 w1 = w; %分类正确,权向量估计不变 else %分类错误 j = j + ox1*x1(i,:);% j=ox*x。进行累积运算 J = J + ox1*x1(i,:)*w;% 感知器代价进行累积运算 end end for i = 1:55 if (x2(i,:)*w)0 w1 = w; %分类正确,权向量估计不变 else %分类错误 j = j + ox2*x2(i,:);% j=ox*x。进行累积运算 J = J + ox2*x2(i,:)*w;% 感知器代价进行累积运算 end end if J=0 %代价为0,即分类均正确 s = 0; %终止迭代 else w1 = w - p*j;% w(t+1)=w(t)-p(ox*x)进行迭代 p=p+0.1;% 调整p n = n+1; %迭代次数加1 end w = w1;% 更新权向量估计endx = linspace(0,10,5000);% 取5000个x的点作图y = (-w(1)/w(2)*x-w(3)/w(2);% x*w1+y*w2+w0=0,w=w1;w2;w0plot(x,y,r);% 用红线画出分界面disp(n);% 显示迭代的次数axis(1,12,0,8)% 设定当前图中,x轴范围为1-12,为y轴范围为0-8end五、实验结果图六、实验结果分析 感知器算法是一种很好的二分类在线算法。在解决线性可分问题时,感知器具有运算速度快,性能可靠的优点。同时理解感知器的工作原理,可以为我们

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论