模式识别上机作业[1]

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

模式识别上机作业
队别:研究生二队
姓名:孙祥威
学号:112082
作业一:
1{(0,0),(0,1)}
ω=,
2{(1,0),(1,1)}
ω=。

用感知器固定增量法求判别函数,设
1(1,1,1)
w=,1
k
ρ=。

写程序上机运行,写出判别函数,打出图表。

解答:
1、程序代码如下:
clc,clear
w=[0 0 1;
0 1 1;
-1 0 -1;
-1 -1 -1];
W=[1 1 1];
rowk=1;
flag=1;
flagS=zeros(1,size(w,1));
k=0;
while flag
for i=1:size(w,1)
if isempty(find(flagS==0))
flag=0;
break;
end
k=k+1;
pb=w(i,:)*W';
if pb<=0
flagS(i)=0;
W=W+rowk*w(i,:);
else
flagS(i)=1;
end
end
end
W,k
wp1=[0 0;
0 1;];
wp2=[1 0;
1 1];
plot(wp1(:,1),wp1(:,2),'o')
hold on
plot(wp2(:,1),wp2(:,2),'*')
hold on
y=-0.2:1/100:1.2;
plot(1/3*ones(1,size(y)),y,'r-') axis([-0.25 1.25 -0.25 1.25])
2、判别函数。

计算得到增广权矢量为*(3,0,1)T w =-,故判别函数表达式为:
1310x -+=
3、分类示意图:
图 1 感知器算法分类结果图
作业二:
在下列条件下,求待定样本(2,0)T x =的类别,画出分界线,编程上机。

1
解答:
经计算,两类的协方差矩阵不相等。

设12()()P P ωω=,计算时相关项直接略去。

1、计算时,参考书中P96页式(4-1-31)等。

程序代码如下:
clc,clear,close all D1=[1,1,2;1,0,-1;]; D2=[-1,-1,-2;1,0,-1;]; u1=mean(D1,2); u2=mean(D2,2);
c1=zeros(size(D1,1),size(D1,1)); for i=1:size(D1,2)
c1=c1+D1(:,i)*D1(:,i)'; end
c1=c1/size(D1,2)-u1*u1';
c2=zeros(size(D2,1),size(D2,1)); for i=1:size(D2,2)
c2=c2+D2(:,i)*D2(:,i)'; end
c2=c2/size(D2,2)-u2*u2'; I=eye(size(c1,1),size(c1,1)); ic1=c1\I; ic2=c2\I; W1=-0.5*ic1; W2=-0.5*ic2; w1=ic1*u1;; w2=ic2*u2;;
w10=-0.5*log(det(c1))-0.5*u1'*ic1*u1; w20=-0.5*log(det(c2))-0.5*u2'*ic2*u2; syms x1 x2; x=[x1;x2];
fprintf('决策界面方程为:')
D=x'*(W1-W2)*x+(w1-w2)'*x+(w10-w20); pretty(D)
fprintf('(2,0)代入决策面方程的值为:') value=subs(D,{x1,x2},[2 0]) figure ezplot(D) hold on
plot(D1(1,:),D1(2,:),'bo')
plot(D2(1,:),D2(2,:),'ks') plot(2,0,'rp')
运行结果显示,决策面方程为:11248180x x x -=。

2、计算结果。

从程序运行结果可以看出,(2,0)T x =带入决策界面方程值为96,可见属于第一类1ω。

见下图:
图2 两类协方差不等分类结果图
图中,黑色方块为第二类2ω,蓝色圆圈为第一类1ω,红色五角星即为要判断类别的(2,0)T x =。

绿色交叉的两条直线即为决策面曲线。

左上和右下为第一类,右上和左下为第二类。

作业三:
有训练集资料矩阵如下表所示,现已知,9N =、1233N N N ===、2n =、
3M =,试问,(2,2)T X =-应属于哪一类?
三类的分界线。

解答:
经计算,三类的协方差矩阵不相等。

设123()()()P P P ωωω==,计算时相关项直接略去。

1、计算时,参考书中P96页式(4-1-31)等。

程序代码如下:
clc,clear,close all D1=[0 2 1;0 1 0;]; D2=[-1 -2 -2;1 0 -1;]; D3=[0 0 1;-2 -1 -2]; X=[-2 2]; u1=mean(D1,2); u2=mean(D2,2); u3=mean(D3,2);
c1=zeros(size(D1,1),size(D1,1)); for i=1:size(D1,2)
c1=c1+D1(:,i)*D1(:,i)'; end
c1=c1/size(D1,2)-u1*u1';
c2=zeros(size(D2,1),size(D2,1)); for i=1:size(D2,2)
c2=c2+D2(:,i)*D2(:,i)'; end
c2=c2/size(D2,2)-u2*u2';
c3=zeros(size(D3,1),size(D3,1)); for i=1:size(D3,2)
c3=c3+D3(:,i)*D3(:,i)'; end
c3=c3/size(D3,2)-u3*u3'; I=eye(size(c1,1),size(c1,1)); ic1=c1\I; ic2=c2\I; ic3=c3\I; W1=-0.5*ic1; W2=-0.5*ic2; W3=-0.5*ic3; w1=ic1*u1; w2=ic2*u2; w3=ic3*u3;
w10=-0.5*log(det(c1))-0.5*u1'*ic1*u1;
w20=-0.5*log(det(c2))-0.5*u2'*ic2*u2; w30=-0.5*log(det(c3))-0.5*u3'*ic3*u3; syms x1 x2 real ; x=[x1;x2];
D12=x'*(W1-W2)*x+(w1-w2)'*x+(w10-w20); D13=x'*(W1-W3)*x+(w1-w3)'*x+(w10-w30); D23=x'*(W2-W3)*x+(w2-w3)'*x+(w20-w30); fprintf('一、二类决策界面方程为:') pretty(D12)
fprintf('一、三类决策界面方程为:') pretty(D13)
fprintf('二、三类决策界面方程为:') pretty(D23)
DD1=x'*W1*x+w1'*x+w10; DD2=x'*W2*x+w2'*x+w20; DD3=x'*W3*x+w3'*x+w30; value=[];
fprintf(['(' num2str(X(1)) ',' num2str(X(2)) ')代入1-2决策面方程的值为:']) v1=subs(DD1,{x1,x2},X)
fprintf(['(' num2str(X(1)) ',' num2str(X(2)) ')代入1-3决策面方程的值为:']) v2=subs(DD2,{x1,x2},X)
fprintf(['(' num2str(X(1)) ',' num2str(X(2)) ')代入2-3决策面方程的值为:']) v3=subs(DD3,{x1,x2},X) V=[v1 v2 v3];
fprintf(['可见(' num2str(X(1)) ',' num2str(X(2)) ')属于第' num2str(find(V==max(V))) '类。

\n']) figure hold on h=ezplot(D12); set(h,'Color','r') h=ezplot(D13); set(h,'Color','b') h=ezplot(D23); set(h,'Color','y')
plot(D1(1,:),D1(2,:),'ko') plot(D2(1,:),D2(2,:),'ks') plot(D3(1,:),D3(2,:),'kp') plot(X(1),X(2),'r*') title('分界线及样本点分布')
1-2类决策面方程为:
22
1211229633618240140737488355328
x x x x x x -
+--+=
1-3类决策面方程为:
2
121226612660x x x x x ++-+=
2-3类决策面方程为:
2
22
121
122512627241802251799813685248
x x x x x x ---+-=
2、计算结果。

从程序运行结果可以看出,(2,0)T x =带入三个判决函数(略去()i P ω相关项)计算的值分别为-95.3521、-17.3521、-29.3521,可见属于第二类2ω。

分类界面参见下图:
图3 三类协方差不等分类结果图
作业四:
解答:
1、程序代码如下: clc,clear,close all
ExampleData=[0,0,2,2,4,4,5,6,6,7,-4,-2,-3,-3,-5,1,0,0,-1,-1,-3;
6,5,5,3,4,3,1,2,1,0,3,2,2,0,2,1,-1,-2,-1,-3,-5;]; Data=[0,2,1,5,6,5,6,7;
0,2,1,3,3,4,4,5;];
N=size(Data,2);
Data=[1:N;Data];
G1=Data;
G2=[];N1=size(G1,2);
N2=size(G2,2);
X1=mean(G1,2);X1=X1(2:end);
X2=[0;0];
E=N1*N2/N*(X1-X2)'*(X1-X2);
RE=[];
ZY=[];
LE=E;
while LE<=E
LE=E;
n1=size(G1,2);
e1=[];
for i=1:n1
g1=G1;
g2=G2;
g2=[g2 g1(:,i)];
g1(:,i)=[];
nn1=size(g1,2);
nn2=size(g2,2);
x1=mean(g1,2);x1=x1(2:end);
x2=mean(g2,2);x2=x2(2:end);
ee1=nn1*nn2/N*(x1-x2)'*(x1-x2);
e1=[e1;ee1];
end
E=max(e1);
RE=[RE;E];
I=find(e1==E);
nzy=G1(1,I);
ZY=[ZY;nzy];
if LE<=E
G2=[G2 G1(:,I)];
G1(:,I)=[];
end
end
RE=[(1:length(RE))' ZY RE]
figure
plot(G1(2,:),G1(3,:),'o')
hold on
plot(G2(2,:),G2(3,:),'*')
2、对分法聚类结果。

两类的标样本号分别为:
第一类:1、2、3
第二类:4、5、6、7、8
3、对分法聚类结果示意图:
图4 对分法聚类结果图作业五:
解答:
1、K次平均算法程序代码如下:
clc,clear,close all
Data=[0 1 2 4 5 5 6 1 1 1;0 1 1 3 3 4 5 4 5 6];
K=3;
N=size(Data,2);
Data=[1:N;Data];
Z=Data(2:end,1:K); W={};
LZ=[];
while ~isequal(Z,LZ)
LZ=Z;
for i=1:K
W{i}=[];
end
for i=1:N
D=[];
for j=1:K
d= sqrt(sum((Data(2:end,i)-Z(:,j)).^2));
D=[D;d];
end
I=find(D==min(D));
W{I(1)}=[W{I(1)} Data(1,i)];
end
Z=[];
for i=1:K
w=W{i};
z=mean(Data(2:end,w),2);
Z=[Z z];
end
end
Z
figure
bh=['o''*''s''.''d''h''p'];
for i=1:K
w=W{i}
plot(Data(2,w),Data(3,w),bh(i));
hold on
end
2、K次平均算法聚类结果。

两类的标样本号分别为:
第一类:1、2、3
第二类:8、9、10
3、K次平均算法聚类结果示意图:
图5 K次平均算法聚类结果图
4、ISODATA算法实现程序为从网上下载的代码,文件较长,参见附上的源代码。

调用计算作业数据代码如下:
clc,clear,close all
X=[0 1 2 4 5 5 6 1 1 1];
Y=[0 1 1 3 3 4 5 4 5 6];
ON=1; OC=4; OS=1; k=4; L=1; I=10; NO=1; min=50;
[centro, Xcluster, Ycluster, A, clustering]=isodata(X, Y, k, L, I, ON, OC, OS, NO, min); clc;
fprintf('聚成类的数目: %d\n',A);
figure;
hold on;
bh=['o''*''s''.''d''h''p'];
for i=1:A,
n=find(clustering==i);
p=plot(X(n), Y(n),bh(i));
title(A);
end;
fprintf('聚成类的数目: %d\n',A);
其中,预期的类数设为4才能得到分成3类的结果。

5、ISODATA算法聚类结果。

两类的标样本号分别为:
第一类:1、2、3
第三类:4、5、6、8
6、ISODATA算法聚类结果示意图:
图6 ISODATA算法聚类结果图。

相关文档
最新文档