模式识别上机作业1.docx
《模式识别上机作业1.docx》由会员分享,可在线阅读,更多相关《模式识别上机作业1.docx(18页珍藏版)》请在冰豆网上搜索。
模式识别上机作业1
模式识别上机作业
队别:
研究生二队
姓名:
***
学号:
******
作业一:
,
。
用感知器固定增量法求判别函数,设
,
。
写程序上机运行,写出判别函数,打出图表。
解答:
1、程序代码如下:
clc,clear
w=[001;
011;
-10-1;
-1-1-1];
W=[111];
rowk=1;
flag=1;
flagS=zeros(1,size(w,1));
k=0;
whileflag
fori=1:
size(w,1)
ifisempty(find(flagS==0))
flag=0;
break;
end
k=k+1;
pb=w(i,:
)*W';
ifpb<=0
flagS(i)=0;
W=W+rowk*w(i,:
);
else
flagS(i)=1;
end
end
end
W,k
wp1=[00;
01;];
wp2=[10;
11];
plot(wp1(:
1),wp1(:
2),'o')
holdon
plot(wp2(:
1),wp2(:
2),'*')
holdon
y=-0.2:
1/100:
1.2;
plot(1/3*ones(1,size(y)),y,'r-')
axis([-0.251.25-0.251.25])
2、判别函数。
计算得到增广权矢量为
,故判别函数表达式为:
3、分类示意图:
图1感知器算法分类结果图
作业二:
在下列条件下,求待定样本
的类别,画出分界线,编程上机。
1、二类协方差相等;2、二类协方差不等。
训练样本号
123
123
特征
112
-1-1-2
特征
10-1
10-1
类别
解答:
经计算,两类的协方差矩阵不相等。
设
,计算时相关项直接略去。
1、计算时,参考书中P96页式(4-1-31)等。
程序代码如下:
clc,clear,closeall
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));
fori=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));
fori=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;
symsx1x2;
x=[x1;x2];
fprintf('决策界面方程为:
')
D=x'*(W1-W2)*x+(w1-w2)'*x+(w10-w20);
pretty(D)
fprintf('(2,0)代入决策面方程的值为:
')
value=subs(D,{x1,x2},[20])
figure
ezplot(D)
holdon
plot(D1(1,:
),D1(2,:
),'bo')
plot(D2(1,:
),D2(2,:
),'ks')
plot(2,0,'rp')
运行结果显示,决策面方程为:
。
2、计算结果。
从程序运行结果可以看出,
带入决策界面方程值为96,可见属于第一类
。
见下图:
图2两类协方差不等分类结果图
图中,黑色方块为第二类
,蓝色圆圈为第一类
,红色五角星即为要判断类别的
。
绿色交叉的两条直线即为决策面曲线。
左上和右下为第一类,右上和左下为第二类。
作业三:
有训练集资料矩阵如下表所示,现已知,
、
、
、
,试问,
应属于哪一类?
训练样本号
123
123
123
特征
021
-1-2-2
001
特征
010
10-1
-2-1-2
类别
要求:
用两种解法:
a、三类协方差不等;b、三类协方差相等。
编程上机,画出三类的分界线。
解答:
经计算,三类的协方差矩阵不相等。
设
,计算时相关项直接略去。
1、计算时,参考书中P96页式(4-1-31)等。
程序代码如下:
clc,clear,closeall
D1=[021;010;];
D2=[-1-2-2;10-1;];
D3=[001;-2-1-2];
X=[-22];
u1=mean(D1,2);
u2=mean(D2,2);
u3=mean(D3,2);
c1=zeros(size(D1,1),size(D1,1));
fori=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));
fori=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));
fori=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;
symsx1x2real;
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=[v1v2v3];
fprintf(['可见('num2str(X
(1))','num2str(X
(2))')属于第'num2str(find(V==max(V)))'类。
\n'])
figure
holdon
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类决策面方程为:
1-3类决策面方程为:
2-3类决策面方程为:
2、计算结果。
从程序运行结果可以看出,
带入三个判决函数(略去
相关项)计算的值分别为-95.3521、-17.3521、-29.3521,可见属于第二类
。
分类界面参见下图:
图3三类协方差不等分类结果图
作业四:
样本
1
2
3
4
5
6
7
8
0
2
1
5
6
5
6
7
0
2
1
3
3
4
4
5
用对分法编程上机,分成两类画出图形。
解答:
1、程序代码如下:
clc,clear,closeall
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;
whileLE<=E
LE=E;
n1=size(G1,2);
e1=[];
fori=1:
n1
g1=G1;
g2=G2;
g2=[g2g1(:
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];
ifLE<=E
G2=[G2G1(:
I)];
G1(:
I)=[];
end
end
RE=[(1:
length(RE))'ZYRE]
figure
plot(G1(2,:
),G1(3,:
),'o')
holdon
plot(G2(2,:
),G2(3,:
),'*')
2、对分法聚类结果。
两类的标样本号分别为:
第一类:
1、2、3
第二类:
4、5、6、7、8
3、对分法聚类结果示意图:
图4对分法聚类结果图
作业五:
已知十个样本,每个样本2个特征,数据如下:
样本
1
2
3
4
5
6
7
8
9
10
0
1
2
4
5
5
6
1
1
1
0
1
1
3
3
4
5
4
5
6
用K次平均算法和ISODATA算法分成3类,编程上机,并画出分类图。
解答:
1、K次平均算法程序代码如下:
clc,clear,closeall
Data=[0124556111;0113345456];
K=3;
N=size(Data,2);
Data=[1:
N;Data];
Z=Data(2:
end,1:
K);W={};
LZ=[];
while~isequal(Z,LZ)
LZ=Z;
fori=1:
K
W{i}=[];
end
fori=1:
N
D=[];
forj=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=[];
fori=1:
K
w=W{i};
z=mean(Data(2:
end,w),2);
Z=[Zz];
end
end
Z
figure
bh=['o''*''s''.''d''h''p'];
fori=1:
K
w=W{i}
plot(Data(2,w),Data(3,w),bh(i));
holdon
end
2、K次平均算法聚类结果。
两类的标样本号分别为:
第一类:
1、2、3
第二类:
8、9、10
第三类:
4、5、6、7
3、K次平均算法聚类结果示意图:
图5K次平均算法聚类结果图
4、ISODATA算法实现程序为从网上下载的代码,文件较长,参见附上的源代码。
调用计算作业数据代码如下:
clc,clear,closeall
X=[0124556111];
Y=[0113345456];
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;
holdon;
bh=['o''*''s''.''d''h''p'];
fori=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
第二类:
7、9、10
第三类:
4、5、6、8
6、ISODATA算法聚类结果示意图:
图6ISODATA算法聚类结果图