感知器准则函数的matlab程序

(5页)

'感知器准则函数的matlab程序'
 clear%产生第一类和第二类原始数据,分别赋值给w1和w2变量w1=[0.1 6.8 -3.5 2.0 4.1 3.1 -0.8 0.9 5.0 3.9;    1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4 4.0];w2=[-3.0 0.5 2.9 -0.1 -4.0 -1.3 -3.4 -4.1 -5.1 1.9;    -2.9 8.7 8 5.2 2.2 3.7 6.2 3.4 1.6 5.1];%分别产生第一类和第二类增广样本向量集ww1、ww2ww1=[ones(1,size(w1,2));w1];ww2=[ones(1,size(w2,2));w2];%产生第一类和第二类样本向量的规范化增广样本向量集w12w12=[ww1,-ww2];y=zeros(1,size(w12,2)); % 产生1x20的行向量,赋给y,初值全为0a=[1;1;1];       %给权向量a赋初值k=0;               %k为迭代次数,a(0)=[1;1;1]while any(y<=0)for i=1:size(y,2)y(i)=a'*w12(:,i);enda=a+(sum((w12(:,find(y<=0)))'))';k=k+1;enda      %显示最终求得的权向量a的值k      %迭代次数值figure(1)plot(w1(1,:),w1(2,:),'r+')hold onplot(w2(1,:),w2(2,:),'*')xmin=min(min(w1(1,:)),min(w2(1,:))); xmax=max(max(w1(1,:)),max(w2(1,:))); ymin=min(min(w1(2,:)),min(w2(2,:))); ymax=max(max(w1(2,:)),max(w2(2,:))); xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-a(2)*xindex/a(3)-a(1)/a(3);plot(xindex,yindex) 我自己模仿写的:%%测试函数点clcclear allx1=-1:0.1:1;y1=x1+2;w1=[x1;y1];x2=-1.5:0.1:0.5y2=x2;w2=[x2;y2];figure(1)plot(x1,y1,'r+')hold onplot(x2,y2,'g*')ww1=[ones(1,size(w1,2));w1];ww2=[ones(1,size(w2,2));w2];w12=[ww1,-ww2];a=[1;1;1];y=zeros(1,size(w12,2));k=1;while any(y<=0)   for i=1:size(w12,2)       y(i)=a'*w12(:,i);   end   temp=sum((w12(:,find(y<=0)))')';   a=a+temp;   k=k+1;endakxmin=min(min(x1),min(x2));xmax=max(max(x1),max(x2));ymin=min(min(y1),min(y2));ymax=max(max(y2),max(y2));xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-a(2)/a(3)*xindex-a(1)/a(3);hold onplot(xindex,yindex)心得体会:感知器准则函数只能用来线性分类,而且最有找到判决边界一般在边界面上,具体原理还是比较好理解的。  三类情况:clear%original data%产生第一类、第二类和第三类原始数据,分别赋给w1、w2 和w3 变量w1=[0.1 0.8 -3.5 2.0 4.1 3.1 -0.8 2 5.0 3.9; 1.1 7.1 -4.1 2.7 2.8 5.0 -1.3 1.2 6.4 4.0];w2=[7.1 -1.4 4.5 6.3 4.2 1.4 2.4 2.5 8.4 4.1;4.2 -4.3 0.0 1.6 1.9 -3.2 -4.0 -6.1 3.7 -2.2];w3=[-3.0 5 2.9 -0.1 -4.0 -1.3 -3.4 -4.1 -5.1 1.9;-2.9 8.7 2.1 5.2 2.2 3.7 6.2 3.4 1.6 5.1];figure(1)plot(w1(1,:),w1(2,:),'r.')hold onplot(w2(1,:),w2(2,:),'*')%normalized%分别产生第一类、第二类和第三类增广样本向量集ww1、ww2 和ww3ww1=[ones(1,size(w1,2)); w1];ww2=[ones(1,size(w2,2)); w2];ww3=[ones(1,size(w3,2)); w3];%产生第一类和第二类样本向量的规范化增广样本向量集w12w12=[ww1,-ww2];%%w13=[ww1,-ww3];%%w23=[ww2,-ww3];y=zeros(1,size(w12,2)); %产生1x20 的行向量,赋给y,初值全为0v=[1;1;1]; %给权向量v 赋初值k=0; %k 为迭代次数,v(0)= [1;1;1]while any(y<=0)for i=1:size(y,2)y(i)=v'*w12(:,i);endv=v+(sum((w12(:,find(y<=0)))'))';k=k+1;endv %显示最终求得的权向量v 的值k %迭代次数值figure(1)plot(w1(1,:),w1(2,:),'r.')hold onplot(w2(1,:),w2(2,:),'*')xmin=min(min(w1(1,:)),min(w2(1,:)));xmax=max(max(w1(1,:)),max(w2(1,:)));ymin=min(min(w1(2,:)),min(w2(2,:)));ymax=max(max(w1(2,:)),max(w2(2,:)));xindex=xmin-1:(xmax-xmin)/100:xmax+1;yindex=-v(2)*xindex/v(3)-v(1)/v(3);plot(xindex,yindex)%写出实现批处理感知器算法的程序,从v=0 开始,将程序应用在ω2 和ω3 类上,同样记下收敛的步数。w23=[ww2,-ww3];yy=zeros(1,size(w23,2)); %产生1x20 的行
关 键 词:
感知 准则 函数 matlab 程序
 天天文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:感知器准则函数的matlab程序
链接地址: https://www.wenku365.com/p-43456426.html
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服点击这里,给天天文库发消息,QQ:1290478887 - 联系我们

本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有【成交的100%(原创)】。本站是网络服务平台方,若您的权利被侵害,侵权客服QQ:1290478887 欢迎举报。

1290478887@qq.com 2017-2027 https://www.wenku365.com 网站版权所有

粤ICP备19057495号 

收起
展开