logo资料库

感知器准则分类器的设计(含matlab代码).doc

第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
资料共6页,全文预览结束
模式识别课内实验(一)
感知器准则分类器的设计
一、实验目的
二、相关知识
三、实验内容及步骤
四、程序
五、实验结果及说明
模式识别课内实验(一) 感知器准则分类器的设计
一、实验目的 1. 掌握线性分类器的设计方案; 2. 掌握感知器准则分类器的设计; 3. 通过编写程序,实现感知器准则算法,并实现线性可分分类; 4. 检验分类器的有效性。 二、相关知识 感知器算法: 梯度下降算法:
三、实验内容及步骤 1. 随机产生数据,将他们分成两类并将它们增广规范化。 2. 采用梯度下降产生解向量,并求出分类·线(或分类面)。 四、程序 clear clc %*************************************** % %*************************************** n=10; 构造实验数据 %产生 n 行两列,均值为 5,标准差为 5 的正态分布随机数 x=round(10*random('norm',5,5,n,2))/10; %调出窗口,标注参数 figure; xlabel('x(1)') ylabel('x(2)') title('感知准则函数') box on %加边框 hold on %使当前轴及图形不在具备被刷新,保持图像 构造两类样本 %*************************************** % %*************************************** n1=0; n2=0; for i=1:n if x(i,2)> 2 * x(i,1)-5 n1=n1+1; w1(n1,:)=x(i,:); plot(x(i,1),x(i,2),'g+') else n2=n2+1; w2(n2,:)=x(i,:); %绘图
plot(x(i,1),x(i,2),'bo'); end end %*************************************** % %*************************************** 规范化增光样本向量 y1=[ones(n1,1)';w1']'; y2=[ones(n2,1)';w2']'; y=[y1;-y2]; %*************************************** % %*************************************** 迭代 a=[0,0,0]'; while isequal(a'*y'<=0,zeros(1,n))==0 for i=1:n if x'*y(i)'<=0 %初始解向量 %假设初始分类正确 a0=a; a=a+y(i,:)'; arrowline([a0(2),a(2)],[a0(3),a(3)],'color','m','linestyle','--'); %查看分类是否错误 %保留数值 %对权向量进行修正 end end end arrowline([0,a(2)],[0,a(3)],'color','r'); text(0,0,'O','verticalalignment','top'); axis tight %axis equal %*************************************** %作出分类线 %*************************************** h=gca; xlim=get(h,'xlim'); ylim=(-a(1)-a(2)*xlim)/a(3); b=line([xlim(1),xlim(2)],[ylim(1),ylim(2)]); set(h,'color','k') x %作解向量 %标记坐标原点 %随机产生图形
五、实验结果及说明 1.主界面 (实验环境:matlab2016) 2.结果(进行 4 次实验)
说明:迭代时,对于线性可分的样本集,经过有限次修正,可以找到一个解向量, 使得算法在有限次迭代后收敛,本次实验对权向量进行修正时采用较为单一的方式,而在 复杂的问题中还可以使用多种修正方式。此外没有显示迭代次数也是本次实验不足之处。 总结:在进行四次随机数生成并分类实验后,可以发现该感知器准则分类器可以较 为稳定的实现线性分类。通过本次实验是我对梯度下降算法有了更加深刻的认识与理 解。
分享到:
收藏