Parzen窗估计与KN近邻估计实验报告.docx

上传人:b****6 文档编号:6577632 上传时间:2023-01-08 格式:DOCX 页数:14 大小:831.55KB
下载 相关 举报
Parzen窗估计与KN近邻估计实验报告.docx_第1页
第1页 / 共14页
Parzen窗估计与KN近邻估计实验报告.docx_第2页
第2页 / 共14页
Parzen窗估计与KN近邻估计实验报告.docx_第3页
第3页 / 共14页
Parzen窗估计与KN近邻估计实验报告.docx_第4页
第4页 / 共14页
Parzen窗估计与KN近邻估计实验报告.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

Parzen窗估计与KN近邻估计实验报告.docx

《Parzen窗估计与KN近邻估计实验报告.docx》由会员分享,可在线阅读,更多相关《Parzen窗估计与KN近邻估计实验报告.docx(14页珍藏版)》请在冰豆网上搜索。

Parzen窗估计与KN近邻估计实验报告.docx

Parzen窗估计与KN近邻估计实验报告

Parzen窗估计与KN近邻估计实验报告

 

 

模式识别实验报告

题目:

Parzen窗估计与KN近邻估计

 

学院计算机科学与技术

专业xxxxxxxxxxxxxxxx

学号xxxxxxxxxxxx

姓名xxxx

其中,P是概率密度函数p(x)的平滑版本,因此可以通过计算P来估计概率密度函数p(x),假设n个样本x1,x2,…,xn,是根据概率密度函数p(x)独立同分布的抽取得到,这样,有k个样本落在区域R中的概率服从以下分布:

其中k的期望值为:

k的分布在均值附近有着非常显著的波峰,因此若样本个数n足够大时,使用k/n作为概率P的一个估计将非常准确。

假设p(x)是连续的,且区域R足够小,则有:

如下图所示,以上公式产生一个特定值的相对概率,当n趋近于无穷大时,曲线的形状逼近一个δ函数,该函数即是真实的概率。

公式中的V是区域R所包含的体积。

综上所述,可以得到关于概率密度函数p(x)的估计为:

在实际中,为了估计x处的概率密度函数,需要构造包含点x的区域R1,R2,…,Rn。

第一个区域使用1个样本,第二个区域使用2个样本,以此类推。

记Vn为Rn的体积。

kn为落在区间Rn中的样本个数,而pn(x)表示为对p(x)的第n次估计:

欲满足pn(x)收敛:

pn(x)→p(x),需要满足以下三个条件:

有两种经常采用的获得这种区域序列的途径,如下图所示。

其中“Parzen窗方法”就是根据某一个确定的体积函数,比如Vn=1/√n来逐渐收缩一个给定的初始区间。

这就要求随机变量kn和kn/n能够保证pn(x)能收敛到p(x)。

第二种“k-近邻法”则是先确定kn为n的某个函数,如kn=√n。

这样,体积需要逐渐生长,直到最后能包含进x的kn个相邻点。

2.Parzen窗估计法

已知测试样本数据x1,x2,…,xn,在不利用有关数据分布的先验知识,对数据分布不附加任何假定的前提下,假设R是以x为中心的超立方体,h为这个超立方体的边长,对于二维情况,方形中有面积V=h^2,在三维情况中立方体体积V=h^3,如下图所示。

根据以下公式,表示x是否落入超立方体区域中:

估计它的概率分布:

其中n为样本数量,h为选择的窗的长度,φ(.)为核函数,通常采用矩形窗和高斯窗。

3.k最近邻估计

在Parzen算法中,窗函数的选择往往是个需要权衡的问题,k-最近邻算法提供了一种解决方法,是一种非常经典的非参数估计法。

基本思路是:

已知训练样本数据x1,x2,…,xn而估计p(x),以点x为中心,不断扩大体积Vn,直到区域内包含k个样本点为止,其中k是关于n的某一个特定函数,这些样本被称为点x的k个最近邻点。

当涉及到邻点时,通常需要计算观测点间的距离或其他的相似性度量,这些度量能够根据自变量得出。

这里我们选用最常见的距离度量方法:

欧几里德距离。

最简单的情况是当k=1的情况,这时我们发现观测点就是最近的(最近邻)。

一个显著的事实是:

这是简单的、直观的、有力的分类方法,尤其当我们的训练集中观测点的数目n很大的时候。

可以证明,k最近邻估计的误分概率不高于当知道每个类的精确概率密度函数时误分概率的两倍。

三、实验基本步骤

第一部分,对表格中的数据,进行Parzen窗估计和设计分类器,本实验的窗函数为一个球形的高斯函数,如下:

1)编写程序,使用Parzen窗估计方法对一个任意的测试样本点x进行分类。

对分类器的训练则使用表格3中的三维数据。

同时,令h=1,分类样本点为(0.5,1.0,0.0),(0.31,1.51,-0.50),(-0.3,0.44,-0.1)进行实验。

2)可以改变h的值,不同的h将导致不同的概率密度曲线,如下图所示。

h=0.1时:

h=0.5时:

h=1时:

第二部分的实验目的是学习和掌握非参数估计:

k-近邻概率密度估计方法。

对前面表格中的数据进行k-近邻概率密度估计方法和设计分类器。

编写程序,对表格中的3个类别的三维特征,使用k-近邻概率密度估计方法。

并且对下列点处的概率密度进行估计:

(-0.41,0.82,0.88),(0.14,0.72,4.1),(-0.81,0.61,-0.38)。

四、实验代码如下:

%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

%k-最近邻算法

%w:

c类训练样本

%x:

测试样本

%k:

参数

functionp=kNearestNeighbor(w,k,x)

%w=[w(:

:

1);w(:

:

2);w(:

:

3)];

[xt,yt,zt]=size(w);

wt=[];%zeros(xt*zt,yt);

ifnargin==2

p=zeros(1,zt);

fori=1:

xt

forj=1:

xt

dist(j,i)=norm(wt(i,:

)-wt(j,:

));

end

t(:

i)=sort(dist(:

i));

m(:

i)=find(dist(:

i)<=t(k+1,i));%找到k个最近邻的编号

end

end

ifnargin==3

forq=1:

zt

wt=[wt;w(:

:

q)];

[xt,yt]=size(wt);

end

fori=1:

xt

dist(i)=norm(x-wt(i,:

));

end

t=sort(dist);%欧氏距离排序

[a,b]=size(t);

m=find(dist<=t(k+1));%找到k个最近邻的编号

num1=length(find(m>0&m<11));

num2=length(find(m>10&m<21));

num3=length(find(m>20&m<31));

ifyt==3

plot3(w(:

1,1),w(:

2,1),w(:

3,1),'r.');

holdon;

gridon;

plot3(w(:

1,2),w(:

2,2),w(:

3,2),'g.');

plot3(w(:

1,3),w(:

2,3),w(:

3,3),'b.');

if(num1>num2)||(num1>num3)

plot3(x(1,1),x(1,2),x(1,3),'ro');

disp(['点:

[',num2str(x),']属于第一类']);

elseif(num2>num1)||(num2>num3)

plot3(x(1,1),x(1,2),x(1,3),'go');

disp(['点:

[',num2str(x),']属于第二类']);

elseif(num3>num1)||(num3>num2)

plot3(x(1,1),x(1,2),x(1,3),'bo');

disp(['点:

[',num2str(x),']属于第三类']);

else

disp('无法分类');

end

end

ifyt==2

plot(w(:

1,1),w(:

2,1),'r.');

holdon;

gridon;

plot(w(:

1,2),w(:

2,2),'g.');

plot(w(:

1,3),w(:

2,3),'b.');

if(num1>num2)||(num1>num3)

plot(x(1,1),x(1,2),'ro');

disp(['点:

[',num2str(x),']属于第一类']);

elseif(num2>num1)||(num2>num3)

plot(x(1,1),x(1,2),'go');

disp(['点:

[',num2str(x),']属于第二类']);

elseif(num3>num1)||(num3>num2)

plot(x(1,1),x(1,2),'bo');

disp(['点:

[',num2str(x),']属于第三类']);

else

disp('无法分类');

end

end

end

title('k-最近邻分类器');

legend('第一类数据',...

'第二类数据',...

'第三类数据',...

'测试样本点');

clear;

closeall;

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

%Parzen窗估计和k最近邻估计

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

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(1,:

)=[0.510];

x(2,:

)=[0.311.51-0.5];

x(3,:

)=[-0.30.44-0.1];

%验证h的二维数据

w2(:

:

1)=[0.281.31;

0.070.58;

1.542.01;

-0.441.18;

-0.810.21;

1.523.16;

2.202.42;

0.911.94;

0.651.93;

-0.260.82];

w2(:

:

2)=[0.0111.03;

1.271.28;

0.133.12;

-0.211.23;

-2.181.39;

0.341.96;

-1.380.94;

-0.120.82;

-1.442.31;

0.261.94];

w2(:

:

3)=[1.362.17;

1.411.45;

1.220.99;

2.462.19;

0.680.79;

2.513.22;

0.602.44;

0.640.13;

0.850.58;

0.660.51];

y(1,:

)=[0.51];

y(2,:

)=[0.311.51];

y(3,:

)=[-0.30.44];

h=.1;%重要参数

p=Parzen(w1,x(1,:

),h);

num=find(p==max(p));

disp(['点:

[',num2str(x(1,:

)),']落在三个类别的概率分别为:

',num2str(p)]);

disp(['点:

[',num2str(x(1,:

)),']落在第',num2str(num),'类']);

%给定三类二维样本,画出二维正态概率密度曲面图验证h的作用

num=1;%第num类的二维正态概率密度曲面图,取值为1,2,3

draw(w2,h,num);

str1='当h=';str2=num2str(h);str3='时的二维正态概率密度曲面';

SC=[str1,str2,str3];

title(SC);

%k近邻算法设计的分类器

%x1和y1为测试样本

x1=[-0.41,0.82,0.88];

x2=[0.14,0.72,4.1];

x3=[-0.81,0.61,-0.38];

y(1,:

)=[0.51];

y(2,:

)=[0.311.51];

y(3,:

)=[-0.30.44];

w=w1;

%w=w1(:

1,3);

k=5;

kNearestNeighbor(w,k,x1);

kNearestNeighbor(w,k,x2);

kNearestNeighbor(w,k,x3);

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1