西交大模式识别实验报告.docx
《西交大模式识别实验报告.docx》由会员分享,可在线阅读,更多相关《西交大模式识别实验报告.docx(12页珍藏版)》请在冰豆网上搜索。
西交大模式识别实验报告
实验报告
一、问题描述
题目1:
研究一些概率密度函数的估计的特性:
(a)编写程序,根据均匀分布产生位于单位立方体内的样本点,即-
其中i=1,2,3.共产生
个点。
(b)编写程序,基于这
个样本点,估计原点附近的概率密度,作为边长为h的立方体体积的函数。
并且对于
画出估计的函数图像。
(c)估计原点附近的概率密度,使用n个样本点,并且选择窗使得恰好包含进n个样本点。
对于
,画出估计的函数图像。
(d)编写程序,产生服从球形高斯分布的概率密度(其中∑=I)并且以原点为中心的样本点。
利用你的高斯数据重复(b)和(c)。
(e)定性的讨论在一致和高斯密度两种情况下,估计结果对函数形式的依赖性的异同点。
题目2:
考虑对于表格中的数据进行Parzen窗估计和设计分类器。
窗函数为一个球形的高斯函数,如下所示:
(a)编写程序,使用Parzen窗估计方法对一个任意的测试样本点x进行分类。
对分类器的训练则使用表格中的三维数据。
同时令h=1,分类样本点为
。
(b)现在我们令h=0.1,重复(a).
二、复现代码(Matlab或Pyhton或其他)
题目1:
(a)
x=unifrnd(-1/2,1/2,1,10000);
y=unifrnd(-1/2,1/2,1,10000);
z=unifrnd(-1/2,1/2,1,10000);
plot3(x,y,z,'r.')
(b)
x=unifrnd(-1/2,1/2,1,10000);
y=unifrnd(-1/2,1/2,1,10000);
z=unifrnd(-1/2,1/2,1,10000);
n=10000;
p=[];
t=[];
h=0:
0.001:
1;
forh=0:
0.001:
1
m=0;
fori=1:
10000
if(abs(x(i))<(1/2*h))&(abs(y(i))<(1/2*h))&(abs(z(i))<(1/2*h))
m=m+1;
end
end
t=[t;h];
k=m/(n*(h^3));
p=[p;k];
end
plot(t,p)
xlabel('h')
ylabel('概率密度p')
(c)
k=1:
10000;
n=10000;
x=[];
y=[];
fork=1:
10000
x=[x;k];
p=(1/n)/(1/sqrt(k));
y=[y;p];
end
plot(x,y)
xlabel('n')
ylabel('概率密度p')
(d)
N=10000
ang1=rand(1,N)*2*pi;%随机10000个0~2pi高斯分布的角度1
ang2=acos(rand(1,N)*2-1);%随机10000个-1~1高斯分布的反余弦获得角度2
r=rand(1,N).^(1/3);%随机10000个0~1高斯分布数的开立方为到原点距离
x=r.*cos(ang1).*sin(ang2);%x
y=r.*sin(ang1).*sin(ang2);%y
z=r.*cos(ang2);%z
figure
(1)
plot3(x,y,z,'r.');
gridon;
axissquare;
n=10000;
p=[];
t=[];
h=0:
0.001:
1;
forh=0:
0.001:
1
m=0;
fori=1:
10000
if(abs(x(i))<(1/2*h))&(abs(y(i))<(1/2*h))&(abs(z(i))<(1/2*h))
m=m+1;
end
end
t=[t;h];
k=m/(n*(h^3));
p=[p;k];
end
figure
(2)
plot(t,p)
xlabel('h')
ylabel('概率密度p')
k=1:
10000;
n=10000;
x=[];
y=[];
fork=1:
10000
x=[x;k];
p=1/n/(1/sqrt(k));
y=[y;p];
end
figure(3)
plot(x,y)
xlabel('n')
ylabel('概率密度p')
题目2:
%Parzen窗算法
%w:
c类训练样本
%x:
测试样本
%h:
参数
%输出p:
测试样本x落在每个类的概率
functionp=Parzen(w,x,h)
[xt,yt,zt]=size(w);
p=zeros(1,zt);
fori=1:
zt
hn=h;
forj=1:
xt
hn=hn/sqrt(j);
p(i)=p(i)+exp(-(x-w(j,:
i))*(x-w(j,:
i))'/(2*power(hn,2)))/(hn*sqrt(2*3.14));
end
p(i)=p(i)/xt;
end
w1(:
:
1)=[0.281.31-6.2;...
0.070.58-0.78;...
1.542.01-1.63;...
-0.441.18-4.32;...
-0.810.215.73;...
1.523.162.77;...
2.202.42-0.19;...
0.911.946.21;...
0.651.934.38;...
-0.260.82-0.96];
w1(:
:
2)=[0.0111.03-0.21;...
1.271.280.08;...
0.133.120.16;...
-0.211.23-0.11;...
-2.181.39-0.19;...
0.341.96-0.16;...
-1.380.940.45;...
-0.120.820.17;...
-1.442.310.14;...
0.261.940.08];
w1(:
:
3)=[1.362.170.14;...
1.411.45-0.38;...
1.220.990.69;...
2.462.191.31;...
0.680.790.87;...
2.513.221.35;...
0.602.440.92;...
0.640.130.97;...
0.850.580.99;...
0.660.510.88];
x=zeros(3,3);
x(1,:
)=[0.510];
x(2,:
)=[0.311.51-0.5];
x(3,:
)=[-0.30.44-0.1];
h=0.1;%重要参数
p=Parzen(w1,x(1,:
),h);
num=find(p==max(p));
disp(['点:
[',num2str(x(1,:
)),']落在三个类别的概率分别为:
',num2str(p)]);
disp(['点:
[',num2str(x(1,:
)),']落在第',num2str(num),'类']);
p=Parzen(w1,x(2,:
),h);
num=find(p==max(p));
disp(['点:
[',num2str(x(2,:
)),']落在三个类别的概率分别为:
',num2str(p)]);
disp(['点:
[',num2str(x(2,:
)),']落在第',num2str(num),'类']);
p=Parzen(w1,x(3,:
),h);
num=find(p==max(p));
disp(['点:
[',num2str(x(3,:
)),']落在三个类别的概率分别为:
',num2str(p)]);
disp(['点:
[',num2str(x(3,:
)),']落在第',num2str(num),'类']);
三、结果分析
题目1:
(b)
当h很小时,概率密度函数并非为1,甚至远大于1是因为样本数目并非无穷大,
只是
的近似值。
h越小,V越小,
越大。
(c)
(d)
(e)均匀分布的概率密度函数为一个矩形窗,高斯分布的概率密度曲线为具有一个单峰的平滑曲线。
两种分布的概率密度估计值都和带宽即设置的窗口大小有关,,选择不同的带宽,会得到不同的概率估计值。
带宽越大,概率密度估计值越大,在不同的函数形式下,选择相同的h估计结果不同,但是选择相同的n,估计结果相同。
题目2:
h=0.1时
点:
[0.510]落在三个类别的概率分别为:
4.3451e-432.7003e-072.4543e-47
点:
[0.510]落在第2类
点:
[0.311.51-0.5]落在三个类别的概率分别为:
1.9187e-446.7674e-102.0289e-43
点:
[0.311.51-0.5]落在第2类
点:
[-0.30.44-0.1]落在三个类别的概率分别为:
7.4653e-284.7765e-113.3355e-127
点:
[-0.30.44-0.1]落在第2类
h=1时
点:
[0.510]落在三个类别的概率分别为:
0.0213990.0634870.036143
点:
[0.510]落在第2类
点:
[0.311.51-0.5]落在三个类别的概率分别为:
0.0207530.048310.031649
点:
[0.311.51-0.5]落在第2类
点:
[-0.30.44-0.1]落在三个类别的概率分别为:
0.0303910.0341470.0032054
点:
[-0.30.44-0.1]落在第2类
h选择不同值时,同一点落在三个类别的概率不同,但是决策基本一致,可能是因为选取的判别点存在一定的特殊性。
四、实验总结
通过本次实验任务,我对于非参数估计的知识有了更深的理解。
学会了产生均匀分布和球形高斯分布的样本点,并对原点附近进行概率密度的估计,学会了用Parzen窗对概率密度进行估计,并对样本点进行分类。
实验中遇到了一些问题,对于V的理解,在本次实验中,我统一将他们理解为了小立方体的体积即h^3,但得到的曲线并不平滑,还有些奇怪,我想我需要进一步的和同学或老师讨论学习,从而确定这种理解是否有错。