Parzen窗估计与KN近邻估计实验报告
Parzen窗方法的分析和研究

对Parzen窗/PNN算法的学习和研究报告姓名:吴潇学号:13337551、Parzen窗方法综述、发展历史及现状模式识别领域的非参数估计方法大致可以分为两类。
第一种类型是先估计出概率密度函数的具体形式,然后再利用这个估计出来的概率密度函数对样本进行分类。
第二种类型是,不估计具体的概率密度函数,而直接根据样本进行分类。
Parzen窗方法就是属于第一种类型的非参数估计方法,概率神经网络(PNN)是它的一种实现方式。
Parzen窗方法的基本思想是利用一定范围内的各点密度的平均值对总体密度函数进行估计。
Parzen窗(Parzen window)又称为核密度估计(kernel density estimation),是概率论中用来估计未知概率密度函数的非参数方法之一。
该方法由Emanuel Parzen于1962年在The Annals of Mathematical Statistics杂志上发表的论文“On Estimation of a Probability Density Function and Mode”中首次提出。
Nadaraya 和Watson最早把这一方法用于回归法中。
Specht把这一方法用于解决模式分类的问题,并且在1990年发表的论文“Probabilistic neural networks”中提出了PNN网络的硬件结构。
Ruppert和Cline基于数据集密度函数聚类算法提出了修订的核密度估计方法,对Parzen窗做了一些改进。
Parzen窗方法虽然是在上个世纪60年代提出来的,已经过去了45年的时间,看上去是一种很“古老”的技术,但是现在依然有很多基于Parzen窗方法的论文发表。
这说明Parzen 窗方法的确有很强的生命力和实用价值,虽然它也存在很多缺点。
2、Parzen窗方法和概率神经网络Parzen窗方法就是基于当样本个数n非常大的时候,有公式p(x)≈k/nV成立这样的一个事实而提出的。
非参数估计_KN近邻

报告人:马振磊
2016/12/27 1
非参数估计
Bayes决策法 概率方法 参数估计法 非参数估计法
统计决策法
几何方法
线性判别函数
非线性判别函数
聚类分析
2016/12/27
2
非参数估计
最大似然估计和贝叶斯估计都属于参数化估计。
要求待估计的类概率密度函数形式已知。
在实际应用中,类概率密度函数形式已知的条件并 不一定成立,特别是多峰的概率分布,用普通函数 难以拟合,这就需要用非参数估计技术。
h1 h1
2016/12/27
18
Kn近邻法
h1 其原因是由于 vn 只与总样本数有关,即 n 进行概率密度 p ( x) 估计时,任何x点处的 vn
n
都是相同的 一种合理的选择是对样本出现密度大的x处, vn 可较小,而对样本密度较小的x处, vn 则相对 大一些,这就是近邻法。
2016/12/27
2016/12/27
24
Kn近邻法
则
kn / n 1 1 Pn ( X ) d vn nvn nhn
对每一类样本重复上述过程,得各类的类概率密度 pn ( X ) 将样本X归类到 pn ( X ) P( j ) 最大的类别中去
2016/12/27
25
Kn近邻法
KN近邻法作后验概率的估计由KN近邻估计知N个已知类别样本 落入VN内为KN个样本的概率密度估计为:
ki kN
类别为ω i的后验概率就是落在V N 内属于ω i的样本ki与V N 内总样本数 k N 的比值。
2016/12/27 27
Kn近邻法
K近邻分类准则:对于待分样本x,找出它的k个近邻,检查 它的类别,把x归于样本最多的那个类别。 K近邻分类的错误率随K↑,Pk↓,最低的错误率为Bayes分类。 PK
非参数估计——核密度估计(Parzen窗)

⾮参数估计——核密度估计(Parzen 窗) 核密度估计,或Parzen 窗,是⾮参数估计概率密度的⼀种。
⽐如机器学习中还有K 近邻法也是⾮参估计的⼀种,不过K 近邻通常是⽤来判别样本类别的,就是把样本空间每个点划分为与其最接近的K 个训练抽样中,占⽐最⾼的类别。
直⽅图 ⾸先从直⽅图切⼊。
对于随机变量X 的⼀组抽样,即使X 的值是连续的,我们也可以划分出若⼲宽度相同的区间,统计这组样本在各个区间的频率,并画出直⽅图。
下图是均值为0,⽅差为2.5的正态分布。
从分布中分别抽样了100000和10000个样本: 这⾥的直⽅图离散地取了21个相互⽆交集的区间:[x −0.5,x +0.5),x =−10,−9,...,10,单边间隔h =0.5。
h >0在核函数估计中通常称作带宽,或窗⼝。
每个长条的⾯积就是样本在这个区间内的频率。
如果⽤频率当做概率,则⾯积除以区间宽度后的⾼,就是拟合出的在这个区间内的平均概率密度。
因为这⾥取的区间宽度是1,所以⾼与⾯积在数值上相同,使得长条的顶端正好与密度函数曲线相契合。
如果将区间中的x 取成任意值,就可以拟合出实数域内的概率密度(其中N x 为样本x i ∈[x −h ,x +h ),i =1,...,N 的样本数):ˆf (x )=N xN ⋅12h 这就已经是核函数估计的⼀种了。
显然,抽样越多,这个平均概率密度能拟合得越好,正如蓝条中上⽅⼏乎都与曲线契合,⽽橙⾊则稂莠不齐。
另外,如果抽样数N →∞,对h 取极限h →0,拟合出的概率密度应该会更接近真实概率密度。
但是,由于抽样的数量总是有限的,⽆限⼩的h 将导致只有在抽样点处,才有频率1/N ,⽽其它地⽅频率全为0,所以h 不能⽆限⼩。
相反,h 太⼤的话⼜不能有效地将抽样量⽤起来。
所以这两者之间应该有⼀个最优的h ,能充分利⽤抽样来拟合概率密度曲线。
容易推理出,h 应该和抽样量N 有关,⽽且应该与N 成反⽐。
k最近邻算法实验报告

题目k-最近邻算法实现学生学生学号专业班级指导教师2015-1-2实验二k-最近邻算法实现一、实验目的1.加强对k-最近邻算法的理解;2.锻炼分析问题、解决问题并动手实践的能力。
二、实验要求使用一种你熟悉的程序设计语言,如C++或Java,给定最近邻数k和描述每个元组的属性数n,实现k-最近邻分类算法,至少在两种不同的数据集上比较算法的性能。
三、实验环境Win7 旗舰版+ Visual Studio 2010语言:C++四、算法描述KNN(k Nearest Neighbors)算法又叫k最临近方法。
假设每一个类包含多个样本数据,而且每个数据都有一个唯一的类标记表示这些样本是属于哪一个分类,KNN就是计算每个样本数据到待分类数据的距离。
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN 方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。
因此,采用这种方法可以较好地避免样本的不平衡问题。
另外,由于KNN 方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN 方法较其他方法更为适合。
该方法的不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K 个最近邻点。
目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
1、 算法思路K-最临近分类方法存放所有的训练样本,在接受待分类的新样本之前不需构造模型,并且直到新的(未标记的)样本需要分类时才建立分类。
K-最临近分类基于类比学习,其训练样本由N 维数值属性描述,每个样本代表N 维空间的一个点。
Parzen窗估计与KN近邻估计实验报告

模式识别实验报告题目:Parzen窗估计与KN近邻估计装订线学院计算机科学与技术专业xxxxxxxxxxxxxxxx学号xxxxxxxxxxxx姓名xxxx指导教师xxxx20xx年xx月xx日Parzen窗估计与KN近邻估计一、实验目的本实验的目的是学习Parzen窗估计和k最近邻估计方法。
在之前的模式识别研究中,我们假设概率密度函数的参数形式已知,即判别函数J(.)的参数是已知的。
本节使用非参数化的方法来处理任意形式的概率分布而不必事先考虑概率密度的参数形式。
在模式识别中有躲在令人感兴趣的非参数化方法,Parzen窗估计和k最近邻估计就是两种经典的估计法。
二、实验原理1.非参数化概率密度的估计对于未知概率密度函数的估计方法,其核心思想是:一个向量x落在区域R中的概率可表示为:其中,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),需要满足以下三个条件:有两种经常采用的获得这种区域序列的途径,如下图所示。
KNN算法实验报告

KNN算法实验报告一、引言(100字)KNN(K-Nearest Neighbors)算法是一种常用的分类算法,在机器学习领域有广泛的应用。
本实验旨在通过实际案例的运用,探究KNN算法的原理及其在分类问题中的应用效果。
二、实验过程(200字)1.数据准备:从UCI机器学习库中选择合适的数据集,包括特征和目标变量,用于训练和测试KNN分类器。
2.数据预处理:对数据进行必要的处理,包括数据清洗、特征提取和特征归一化等。
3.划分数据集:将数据集分为训练集和测试集,一般采用80%训练集和20%测试集的比例。
4.特征选择:选择合适的特征子集作为输入数据,以避免维度灾难和提高算法的性能。
5.构建模型:使用KNN算法进行模型训练,根据训练集数据计算每个测试样本与训练样本之间的距离,并根据K值确定测试样本的类别。
6.模型评估:使用测试集数据对模型进行评估,包括准确率、召回率和F1值等指标。
7.参数调优:根据评估结果,调整K值和特征选择的相关参数,优化模型的性能。
三、实验结果(300字)本实验选取了UCI机器学习库中的鸢尾花数据集,该数据集包括4个特征变量和1个目标变量,用于分类三种不同种类的鸢尾花。
在数据预处理阶段,对数据进行了清洗和特征提取。
对于缺失值,采用均值填充的方式进行处理;对于离散特征,采用one-hot编码将其转化为连续特征。
同时,还对数据进行了归一化处理,使得各个特征之间的数值范围相同。
然后将数据集分为训练集和测试集,其中80%作为训练集,20%作为测试集。
经过特征选择和模型训练后,将得到的模型应用到测试集上,得到了较好的分类结果。
通过计算准确率、召回率和F1值等指标,可以评估模型的性能。
最后,通过调整K值,并使用交叉验证的方法进行参数选择,进一步优化了模型的性能。
四、实验分析(400字)通过本实验,我们可以得出以下结论:其次,数据预处理是提高模型性能的重要步骤。
对于缺失值和离散特征,需要进行适当的处理,以避免对模型的影响。
k最近邻算法实验报告

题目k-最近邻算法实现学生姓名学生学号专业班级指导教师2015-1-2实验二k-最近邻算法实现一、实验目的1.加强对k-最近邻算法的理解;2.锻炼分析问题、解决问题并动手实践的能力。
二、实验要求使用一种你熟悉的程序设计语言,如C++或Java,给定最近邻数k和描述每个元组的属性数n,实现k-最近邻分类算法,至少在两种不同的数据集上比较算法的性能。
三、实验环境Win7 旗舰版+ Visual Studio 2010语言:C++四、算法描述KNN(k Nearest Neighbors)算法又叫k最临近方法。
假设每一个类包含多个样本数据,而且每个数据都有一个唯一的类标记表示这些样本是属于哪一个分类,KNN就是计算每个样本数据到待分类数据的距离。
如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。
因此,采用这种方法可以较好地避免样本的不平衡问题。
另外,由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN 方法较其他方法更为适合。
该方法的不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K 个最近邻点。
目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
1、 算法思路K -最临近分类方法存放所有的训练样本,在接受待分类的新样本之前不需构造模型,并且直到新的(未标记的)样本需要分类时才建立分类。
K -最临近分类基于类比学习,其训练样本由N 维数值属性描述,每个样本代表N 维空间的一个点。
实验报告

K-最邻近算法与算法的简单改进学院计算机科学与技术专业计算机科学与技术年级2011级姓名王云标指导教师宫秀军2014年5月3日K-最邻近算法与算法的简单改进1.基本介绍K最近邻(k-Nearest Neighbor,KNN)分类算法,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。
该方法的思路是:如果一个样本在特征空间中的k个最相似(即特征空间中最邻近)的样本中的大多数属于某一个类别,则该样本也属于这个类别。
KNN算法中,所选择的邻居都是已经正确分类的对象。
该方法在定类决策上只依据最邻近的一个或者几个样本的类别来决定待分样本所属的类别。
KNN方法虽然从原理上也依赖于极限定理,但在类别决策时,只与极少量的相邻样本有关。
由于KNN方法主要靠周围有限的邻近的样本,而不是靠判别类域的方法来确定所属类别的,因此对于类域的交叉或重叠较多的待分样本集来说,KNN方法较其他方法更为适合。
KNN算法不仅可以用于分类,还可以用于回归。
通过找出一个样本的k个最近邻居,将这些邻居的属性的平均值赋给该样本,就可以得到该样本的属性。
更有用的方法是将不同距离的邻居对该样本产生的影响给予不同的权值(weight),如权值与距离成正比。
该算法在分类时有个主要的不足是,当样本不平衡时,如一个类的样本容量很大,而其他类样本容量很小时,有可能导致当输入一个新样本时,该样本的K个邻居中大容量类的样本占多数。
该算法只计算“最近的”邻居样本,某一类的样本数量很大,那么或者这类样本并不接近目标样本,或者这类样本很靠近目标样本。
无论怎样,数量并不能影响运行结果。
可以采用权值的方法(和该样本距离小的邻居权值大)来改进。
该方法的另一个不足之处是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。
目前常用的解决方法是事先对已知样本点进行剪辑,事先去除对分类作用不大的样本。
该算法比较适用于样本容量比较大的类域的自动分类,而那些样本容量较小的类域采用这种算法比较容易产生误分。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
模式识别实验报告题目:Parzen 窗估计与KN 近邻估计学 院 计算机科学与技术 专 业 xxxxxxxxxxxxxxxx 学 号 xxxxxxxxxxxx 姓 名 xxxx 指导教师 xxxx20xx 年xx 月xx 日Parzen 窗估计与KN 近邻估计装 订 线一、实验目的本实验的目的是学习Parzen窗估计和k最近邻估计方法。
在之前的模式识别研究中,我们假设概率密度函数的参数形式已知,即判别函数J(.)的参数是已知的。
本节使用非参数化的方法来处理任意形式的概率分布而不必事先考虑概率密度的参数形式。
在模式识别中有躲在令人感兴趣的非参数化方法,Parzen窗估计和k最近邻估计就是两种经典的估计法。
二、实验原理1.非参数化概率密度的估计对于未知概率密度函数的估计方法,其核心思想是:一个向量x落在区域R中的概率可表示为:其中,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, (x)而估计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落在每个类的概率function p = Parzen(w,x,h)[xt,yt,zt] = size(w);p = zeros(1,zt);for i = 1:zthn = h;for j = 1:xthn = 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));endp(i) = p(i) / xt;end% k-最近邻算法% w:c类训练样本% x:测试样本% k:参数function p = kNearestNeighbor(w,k,x)% w = [w(:,:,1);w(:,:,2);w(:,:,3)];[xt,yt,zt] = size(w);wt = [];%zeros(xt*zt, yt);if nargin==2p = zeros(1,zt);for i = 1:xtfor j = 1:xtdist(j,i) = norm(wt(i,:) - wt(j,:));endt(:,i) = sort(dist(:,i));m(:,i) = find(dist(:,i) <= t(k+1,i)); % 找到k个最近邻的编号 endendif nargin==3for q = 1:ztwt = [wt; w(:,:,q)];[xt,yt] = size(wt);endfor i = 1:xtdist(i) = norm(x - wt(i,:));endt = 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));if yt == 3plot3(w(:,1,1),w(:,2,1),w(:,3,1), 'r.');hold on;grid on;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),']属于第三类']);elsedisp('无法分类');endendif yt == 2plot(w(:,1,1),w(:,2,1), 'r.');hold on;grid on;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),']属于第三类']); elsedisp('无法分类');endendendtitle('k-最近邻分类器');legend('第一类数据',...'第二类数据',...'第三类数据',...'测试样本点');clear;close all; %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Parzen窗估计和k最近邻估计%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%w1(:,:,1) = [ 0.28 1.31 -6.2;0.07 0.58 -0.78;1.542.01 -1.63;-0.44 1.18 -4.32;-0.81 0.21 5.73;1.52 3.162.77;2.20 2.42 -0.19;0.91 1.94 6.21;0.65 1.93 4.38;-0.26 0.82 -0.96];w1(:,:,2) = [0.011 1.03 -0.21;1.27 1.28 0.08;0.13 3.12 0.16;-0.21 1.23 -0.11;-2.18 1.39 -0.19;0.34 1.96 -0.16; -1.38 0.94 0.45; -0.12 0.82 0.17; -1.44 2.31 0.14;0.26 1.94 0.08];w1(:,:,3) = [ 1.36 2.17 0.14;1.41 1.45 -0.38;1.22 0.99 0.69;2.46 2.19 1.31;0.68 0.79 0.87;2.513.22 1.35;0.60 2.44 0.92;0.64 0.13 0.97;0.85 0.58 0.99;0.66 0.51 0.88];x(1,:) = [0.5 1 0];x(2,:) = [0.31 1.51 -0.5];x(3,:) = [-0.3 0.44 -0.1];% 验证h的二维数据w2(:,:,1) = [ 0.28 1.31 ;0.07 0.58 ;1.542.01 ;-0.44 1.18 ;-0.81 0.21 ;1.52 3.16 ;2.20 2.42 ;0.91 1.94 ;0.65 1.93 ;-0.26 0.82 ];w2(:,:,2) = [0.011 1.03 ;1.27 1.28 ;0.13 3.12 ;-0.21 1.23 ;-2.18 1.39 ;0.34 1.96 ;-1.38 0.94 ;-0.12 0.82 ;-1.44 2.31 ;0.26 1.94 ];w2(:,:,3) = [1.36 2.17 ;1.41 1.45 ;1.22 0.99 ;2.46 2.19 ;0.68 0.79 ;2.513.22 ;0.60 2.44 ;0.64 0.13 ;0.85 0.58 ;0.66 0.51 ];y(1,:) = [0.5 1];y(2,:) = [0.31 1.51];y(3,:) = [-0.3 0.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.5 1];y(2,:) = [0.31 1.51];y(3,:) = [-0.3 0.44];w = w1;%w = w1(:,1,3);k = 5;kNearestNeighbor(w,k,x1);kNearestNeighbor(w,k,x2);kNearestNeighbor(w,k,x3);。