中科大模式识别大作业实验报告

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

功能函数:
function [ output_args ] = func1( w1,w2,w,c ) [m1,n1]=size(w1); [m2,n2]=size(w2); ww1=double(ones(m1,n1+1));%¹¹ÔìÔö¹ãÏòÁ¿ ww2=double(ones(m2,n2+1)); for i=1:m1 for j=1:n1 ww1(i,j)=w1(i,j); end end for i=1:m2 for j=1:n2 ww2(i,j)=w2(i,j); end end ww2=-ww2; isover=0; while isover ~= m1+m2 isover = 0; for i=1:m1 g=ww1(i,:).*w; sm=sum(g); if sm <= 0 w = w+c*ww1(i,:); else isover = isover+1; end end
另外参考代码:
function [ T ] = func3( X ) % Sigma='ab';%¡Æ % Q='SBT'; q0='S'; T=myfind(q0,X); if(T=='T') T='recepted'; else T='unrecepted'; end end function [result]=myfind(recent,X) result = ' '; n=size(X,2); next=delta(recent,X(1),1); if n==1&&next=='T' result = 'T'; return; elseif n==1||next==' ' result = ' '; % return; else T=myfind(next,X(1,2:n)); if T=='T' result = T; return; end end if recent=='B' && X(1)=='a' next=delta(recent,X(1),2); if n==1&&next=='T' result = 'T'; return; elseif
n==1 '; else
result = ' return;
T=myfind(next,X(1,2:n)); if T=='T' result = T; return; else result = ' '; return; end end end end function [next] = delta(recent,step,n)%¦Ä switch recent case 'S' switch step case 'a' next='B'; case 'b' next=' '; end case 'B' switch step case 'a' switch n case 1 next='B'; case 2 next='T'; end case 'b' next='S'; end case 'T' switch step case 'a' next=' '; case 'b' next=' ';
scatter(x1(3,1),x1(3,2),'red'); scatter(x2(1,1),x2(1,2),'blue'); scatter(x2(2,1),x2(2,2),'blue'); scatter(x2(3,1),x2(3,2),'blue'); line([0,-w(3)/w(1)],[w(3)/w(2),0]); end
各群样本数目相差很大时,由于程序中已经设置聚类中心随机生成,故 其的图也是随机变化的:
实验小结:使用 matlab 编程验证了最小均方误差算法的适用 性以及在不同场合下产生的不同聚类效果,直观的效果加强了 对其的认识。 实验三:
实验题目: 给定正规文法 G={Vn,Vt,P,S} Vn={S,B} Vt= {a,b} P: S->aB, B->bS, B->aB, B->a 构造确定的有限自动机后,编制确定的有限自动机算法,并 分析链:检验 X=aababaaababaaa 和 X=ababaababaaba 是否 能被 G 接受。 (1) 总结出被接受的链的一般特征。 (2) 分析正规文法和确定的有限自动机的联系并撰写实验报告。 实验目的:掌握语言根据文法的构造方法,总结被接受的链的一般特 征。知道有限状态自动机识别 语言的过程。
模式识别大作业实验报告
MyZenith(PB1*210***) By N_3104_EVER 实验一: (1) 已知二维模式样本集 X1={(1,0),(1,1), (0,2)} X2={(2,1),(2,2),(1,3)} ,用固 定增量算法求分界面方程,并作图。 (2) 分别改变初始权值向量和样本集中样本顺序来获得 不同的结果。 (3) 自定义线性不可分样本(如 X1={(1,0),(1,1)} X2={(0,1),(1,0)}),通过限定算法迭代次数 (如 100 次)得到结果并分析。 (4) 分析实验结果和所得结论,撰写实验报告。 实验目的: 通过编程实现感知器算法,加深对感知器算法的认识,掌握 对分界面求取的步骤与过程。 实验代码: 使用 MATLAB 编程实现:主 程序:
function [ output_args ] = main1( input_args ) x1=[1,0;1,1;0,2]; x2=[2,1;2,2;1,3]; [m,n]=size(x1); % w=double(ones(1,n+1));%设定 权向量 w=double([1,0,1]); w=func1(x1,x2,w,0.3); axis([-1 3 -1 4]);hold; scatter(x1(1,1),x1(1,2),'red'); scatter(x1(2,1),x1(2,2),'red');
实验代码:方案 一:
%vector=(1,0,0)=>S
%vector=(0,1,0)=>B %vector=(0,0,1)=>Wrong s1='aababaaababaaa'; check(s1); s2='ababaababaaba'; check(s2); function output=check(ss) vector=[1,0,0]; A=[0 1 0;0 1 0;0 0 1]; B=[0 0 1;1 0 0;0 0 1]; for i=1:length(ss)-1 if (ss(i)=='a') vector=vector*A; else vector=vector*B; end end if (vector==[0 1 0] & ss(end)=='a') disp('¿ÉÒÔ±»½ÓÊÜ'); else disp('²»¿ÉÒÔ±»½ÓÊÜ'); end end ; 实验结果:
N=100; m=5; sample=rand(N,2); center=rand(m,2); times=0; class=ones(N); while (times<=100) times=times+1 for i=1:N dist=2; for j=1:m t=norm(sample(i,:)center(j,:)); if t<dist dist=t;no=j; end end class(i)=no; end for j=1:m tt= [0,0];number=0; for i=1:N if class(i)==j tt=tt+sample(i,:); number=number+1; end end tt=tt/number; center(j,:)=tt; end end temp= ['o','+','^','*','p','h','.','v','>','<']; for i=1:N plot(sample(i,1),sample(i,2),temp(class(i)));hold on; end for j=1:m plot(center(j,1),center(j,2),temp(j),'MarkerSize',15, d on; end 实验结果: 各群样本都很密集并且彼此明显分开的情况下:
其图均 相同,故可知 w 的选择影响算法的迭代次数。 (3) 代码如下: x=[1 1 0 -1; 0 1 -1 0; 1 1 -1 -1;]; w=[1,1,1]; k=0; p=1; n=0; while ((n<4)&&(k<100)) i=mod(k,4)+1; g=w*x(:,i); if(g<=0) w=w+p*x(:,i)'; n=0; else n=n+1; end k=k+1; end lx=-3:1:3; tx=[1 1 0 1;]; ty=[0 1 1 0;]; tx1=[1 1];tx2=[0 1]; ty1=[0 1];ty2=[1 0]; plot(tx1,ty1,'blue'); hold on; plot(tx2,ty2,'red'); hold on; ly=((w(:,1)*lx+w(:,3))/w(:,2)); plot(lx,ly);hold on;
for i=1:m2 g=ww2(i,:).*w; sm=sum(g); if sm <= 0 w = w+c*ww2(i,:); else isover = isover+1; end end end output_args = w; end
运行结果:
(2)改变权值 w=[1,1,0] 结果如下:
由图可知,感知器算法在得到最优解之前会一直迭代 下去。 实验小结:使用 matlaB 成功展示了感知器算法在模式识别中的作 用,对权向量,线性 可分/不可分的数据都进行了处理,由此可以验证感知器算法的一系列 性质。 实验二: 实验题目: 1 试就不同的初始分化,观察集群结果对初始分化的敏感性。 2 比较各群样本都很密集并且彼此明显分开的情况下与各群样本数目相 差很大时,误差平方和集群效果,了解误差平方和准则函数集群的优 势和缺陷。 3 试对算法进行适当改进使其可以对样本数目相差很大的情况进行集 群,用文字叙述改进的思路。 4 给出以上各种情况的图形结果,撰写实验报告。 实验目的: 熟悉误差平方和函数的集群方法,能分析初始化对集群 带来的影响,了解误差平方和集群方法的优劣。原理分析与程序源码: 误差平方和准则函数: 实验代码:
wk.baidu.com end
end
end 经过验证有同样的效果! 实验小结:有限状态自动机是具有离散输入和输出的系统的 一种数学模型。 其主要特点有以下几个方面: –(1)系统具有有限个状态,不同的状态代表不同的意义。按照实际的需 要,系统可以在不同的状态下完成规定的任务。 –(2)我们可以将输入字符串中出现的字符汇集在一起构成一个字母表。 系统处理的所有字符串都是这个字母表上的字符串。 –(3)系统在任何一个状态下,从输入字符串中读入一个字符,根据当前 状态和读入的这个字符转到新的状态。 –(4)系统中有一个状态,它是系统的开始状态。 –(5)系统中还有一些状态表示它到目前为止所读入的字 被接受的链的一般特征: 非确定有限状态自动机与确定有限状态自动机的唯一区别是它们的转移 函数不同。确定有限状态自动机对每一个可能的输入只有一个状态的转 移。非确定有限状态自动机对每一个可能的输入可以有多个状态转移, 接受到输入时从这多个状态转移中非确定地选择一个。 确定有限自动机(DFA): 自动机的每个状态都有对字母表中所有符号的转移。 非确定有限自动机(NFA): 自动机的状态对字母表中的每个符号可以有也可以没有转移,对一个符 号甚至可以有多个转移。自动机接受一个字,如果存在至少一个从 q0 到 F 中标记(label)著这个输入字的一个状态的路径。如果一个转移是 「未定义」的,自动机因此不知道如何继续读取输入,则拒绝这个字。
相关文档
最新文档