模式识别总结.docx
- 文档编号:837415
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:21
- 大小:1.27MB
模式识别总结.docx
《模式识别总结.docx》由会员分享,可在线阅读,更多相关《模式识别总结.docx(21页珍藏版)》请在冰豆网上搜索。
模式识别总结
模式识别实验报告
学生姓名:
学号:
实验2
一.习题2.1
a)实验代码(实现类的,请列出代码,如果是验证类的,请不用列代码,而是关键代码的解释)
clearall;
clc;
randn(’seed’,0)%Initializationoftherandnfunction
m=[00]';
S=[10;01];S=[20;02];
N=500;
X=mvnrnd(m,S,N)';
figure
(1),plot(X(1,:
),X(2,:
),'。
');
figure
(1),axisequal
figure
(1),axis([-77-77])
b)实验结果截图
c)结果分析(请不要讲空话或抄书)
1.M确定其中心点
2.S确定其分布范围,即点距离中心点的疏密程度
二.习题2。
2
a)实验代码
函数部分:
function[z]=comp_gauss_dens_val(m,S,x)
[l,c]=size(m);
z=(1/((2*pi)^(l/2)*det(S)^0.5))*exp(-0.5*(x—m)'*inv(S)*(x—m));
实现部分:
m=[01]’;S=eye
(2);
x1=[11]';
pg1=comp_gauss_dens_val(m,S,x1)
b)实验结果截图
c)结果分析(请不要讲空话或抄书)
实验代码在pdf中已给出,其中m为中心点,S为协方差矩阵,x1为特征向量
三.习题1。
3。
1
a)实验代码(实现类的,请列出代码,如果是验证类的,请不用列代码,而是关键代码的解释)
函数部分:
function[z]=comp_gauss_dens_val(m,S,x)
[l,c]=size(m);
z=(1/((2*pi)^(l/2)*det(S)^0.5))*exp(—0。
5*(x-m)’*inv(S)*(x-m));
实现部分:
m=[01]’;S=eye
(2);
x1=[0.21。
3]';x2=[2.2—1.3]’;
pg1=comp_gauss_dens_val(m,S,x1)
pg2=comp_gauss_dens_val(m,S,x2)
b)实验结果截图
c)结果分析(请不要讲空话或抄书)
本实验为验证性实验,类似于实验2,所得结果正确。
四.习题1.3.3
a)实验代码
clearall;
clc;
randn(’seed’,0)%Initializationoftherandnfunction
m=[00]';
S=[10;01];
N=500;
X=mvnrnd(m,S,N)';
figure
(1),plot(X(1,:
),X(2,:
),'。
');
figure
(1),axisequal
figure
(1),axis([-77—77])
后续代码基本相同,只需修改S中数值即可.
b)结果截图
1。
S=[10;01]2。
S=[0.20;00.2]
3。
S=[20;02]4。
S=[0.20;02]
5.S=[20;00。
2]6。
S=[10.5;0。
51]
7.S=[0。
30.5;0。
52]8。
S=[0.3-0.5;—0.52]
c)结果分析
本实验中可以看出协方差矩阵决定了所得图像的分布。
将S定位为[x1,x2;x2,x3],其中x2决定了图案偏向,例如第7、8张图进行比较,可以看出x2的影响,再由3、4、5可以看出x1决定图案的长度,x2决定图案的宽度。
五.习题2。
3
a)实验代码
函数部分:
function[X,y]=generate_gauss_classes(m,S,P,N)
[l,c]=size(m);
X=[];
y=[];
forj=1:
c
mj=m(:
,j);
t=mvnrnd(mj,S{j},fix(P(j)*N));
X=[Xt'];
y=[yones(1,fix(P(j)*N))*j];
End
主函数部分:
m=[121;345];
Sigma=[94;43];
S={Sigma,Sigma,Sigma};
P=[0。
20.10。
7];
N=10;
[Xy]=generate_gauss_classes(m,S,P,N);
disp(X)
disp(y)
b)结果截图
c)结果分析
数据随机。
六.习题2.4
a)实验代码
函数部分:
functionplot_data(X,y,m)
[l,N]=size(X);
[l,c]=size(m);
if(l~=2)
fprintf(’NOPLOTCANBEGENERATED\n')
return
else
pale=[’r。
';'g。
’;'b。
';’y.';'m。
';'c.’];
figure
(1)
holdon
fori=1:
N
plot(X(1,i),X(2,i),pale(y(i),:
))
end
forj=1:
c
plot(m(1,j),m(2,j),’k+’)
end
End
主函数部分;
m=[121;345];
Sigma=[94;43];
S={Sigma,Sigma,Sigma};
P=[0。
20。
10。
7];
N=10;
[Xy]=generate_gauss_classes(m,S,P,N);
plot_data(X,y,m)
b)结果截图
c)结果分析
实验与上一实验相连,及图中的点是通过高斯类生成的,故代码与上一实验基本相同,最后通过画图语句plot将点描绘出来.
七.习题2.5
a)实验代码
函数部分:
functionz=bayes_classifier(m,S,P,X)
[l,c]=size(m);
[l,N]=size(X);
fori=1:
N
forj=1:
c
t(j)=P(j)*comp_gauss_dens_val(m(:
,j),S(:
,:
j),X(:
,i));
end
[num,z(i)]=max(t);
End
主函数部分:
m=[11;11];
S(:
,:
1)=[10;01];
S(:
:
,2)=[20;02];
P=[0.80。
2];
X1=[10]’;
X2=[20]’;
pg1=bayes_classifier(m,S,P,X1)
pg2=bayes_classifier(m,S,P,X2)
b)结果截图
c)结果分析
实验中首先建立的两个类x1、x2,在由贝叶斯分类器分类,最后可以看出他们均属于第一类.贝叶斯分类器的输入形式与之前不尽相同,其中m为均值向量,s为协方差矩阵,P为先验概率,x1、x2为验证数据。
实验3
a)实验代码:
nbayes_learn:
function[params]=nbayes_learn(traindata,trainlabels)
nclasses=2;
d=size(traindata,2);
n=size(traindata,1);
fori=1:
nclasses
index=trainlabels==i;
params
(1)。
classprobs(i)=length(find(index))/n;
forj=1:
d
a=0;b=0;
forh=1:
n
if(trainlabels(h)==i)
if(traindata(h,j)==1)a=a+1;end
if(traindata(h,j)==2)b=b+1;end
end
end
fork=1:
2
if(k==1)
params(j)。
cprobs(k,i)=(a+0。
5)/(length(find(index))+1);
end
if(k==2)params(j)。
cprobs(k,i)=(b+0。
5)/(length(find(index))+1);
end
end
end
End
forj=1:
d
a=0;b=0;
forh=1:
n
if(traindata(h,j)==1)a=a+1;end
if(traindata(h,j)==2)b=b+1;end
end
fork=1:
2%estimateprob(variablex_j=k)
if(k==1)
params(j)。
mprobs(k)=a/n;
end
if(k==2)
params(j).mprobs(k)=b/n;
end
end
End
nbayes_predict:
function[predictions]=nbayes_predict(params,testdata)
nclasses=2;
ntest=size(testdata,1);
d=size(testdata,2);
predictions=zeros(1,ntest);
form=1:
ntest
p=zeros(1,2);
x=testdata(m,:
);
forclassi=1:
nclasses;
p(classi)=p(classi)+log(params
(1).classprobs(classi));
forj=1:
d
p(classi)=p(classi)+log(params(j).cprobs(x(j),classi));
end
end
%selectthemaximumvalueoverallclassesasthepredictedclass
if(p
(1)>p
(2))predictions(m)=1;end
if(p
(1)〈p
(2))predictions(m)=2;end
End
Main:
data=load(’D:
\spam_features.txt’);
labels=load('D:
\spam_labels。
txt’);
x=input(’训练样本个数x=');
y=input(’测试样本个数y=');
train=data(1:
x,1:
57);
train2=labels(1:
x);
test=data(x+1:
x+y,1:
57);
params=nbayes_learn(train,train2);
predictions=nbayes_predict(params,test);
t=0;
forh=1:
y
if(labels(x+h)==predictions(h))t=t+1;end
end
fprintf('正确率为:
%f\n',t/y);
b)实验截图:
c)代码分析:
本次实验我是在看了同学的代码后写出来的,因为自己确实不会做,虽然最后代码成功运行了,但代码并没有完全搞懂.
实验4
一、习题4.1
b)实验代码:
略
b)实验截图:
略
c)代码分析:
首先,程序分为四部分,即实验数据建立函数Data,试验测试过程函数Model,描绘函数normallyDistributedSample及试验输出函数displayPer
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 模式识别 总结