贝叶斯最小错误概率分类器设计
- 格式:docx
- 大小:423.68 KB
- 文档页数:9
基于最⼩错误率的贝叶斯决策理论上的东西,就不写了,也写不出什么有价值的东西,资料太多了。
后⽂很多关于原理的讲述都给出了其他⽂章的引⽤。
分享⼀个⽐较简单易懂的。
数据集:328 个同学的⾝⾼、体重、性别数据(78 个⼥⽣、250 个男⽣)124 个同学的数据(40 ⼥、84 男)90 个同学的数据(16 ⼥,74 男)问题描述:以dataset1为训练数据库,假设⾝⾼与体重满⾜⾼斯分布,进⾏⾼斯分布的参数估计,并进⾏基于最⼩错误率的贝叶斯分类,分别考虑男⼥的先验概率,0.5-0.5;0.6-0.4;0.7-0.3,0.8-0.2,并以dataset2和dataset3为测试数据库分析分类性能,并探讨先验概率对分类性能的影响需要解决的问题:通过⽂章开头提供的资料可以看出,其实判别的函数就是下图,就是给定⼀个待测向量X,它是类别Wi的概率。
等号右边,P(Wi)就是先验概率,⽽p(X|Wi)则需要根据⾼斯概率密度函数(什么是⾼斯分布?)进⾏估计:然⽽,上⾯常见的⾼斯概率密度函数只是针对⼀维的参数X,对于⼤多数情况,输⼊参数会是多维的,多元⾼斯概率密度函数怎么求解呢?可以参考这篇⽂章:。
于是,我们得到针对⼆元变量的概率密度函数求解为:重点说明下,上⾯的参数,是多元变量间的相关性参数,设定值应该⼩于1。
⼆元变量相关系数求法:解决问题(python,numpy库⽀持):#-*-encoding:utf-8-*-import numpyimport mathdef importdata(filename = 'dataset1.txt') :'''导⼊训练集'''f = open(filename,'r')dataset = []arr = []for item in f :vars = item.split()dataset.append([float(vars[0]), float(vars[1]), vars[2].upper()])return datasetdef getParameters(dataset) :'''从训练集分别获取不同类别下的期望、⽅差、标准差、类别的先验概率以及变量间相关系数'''class1 = []class2 = []class_sum = []for item in dataset :class_sum.append([item[0],item[1]])if item[-1] == 'F' :class1.append([item[0],item[1]])if item[-1] == 'M' :class2.append([item[0],item[1]])class1 = numpy.array(class1)class2 = numpy.array(class2)class_total = numpy.array(class_sum)mean1 = numpy.mean(class1,axis=0)variance1 = numpy.var(class1,axis=0)stand_deviation1 = numpy.std(class1,axis=0)mean2 = numpy.mean(class2,axis=0)variance2 = numpy.var(class2,axis=0)stand_deviation2 = numpy.std(class2,axis=0)class_total = (len(class1) + len(class2)) * 1.0mean = numpy.mean(class_sum, axis=0)stand_deviation = numpy.std(class_sum, axis=0)new_arr = [ ((item[0] - mean[0]) * (item[1] - mean[1]) / stand_deviation[0] / stand_deviation[1]) for item in dataset]coefficient = numpy.mean(new_arr)return (mean1,mean2),(variance1,variance2),(stand_deviation1, stand_deviation2),(len(class1)/class_total,len(class2)/class_total),coefficient def GaussianFunc(mean, variance, stand_deviation, coefficient) :'''根据指定参数(期望、⽅差、标准差、多元向量间的相关性)⽣成⾼斯函数多元变量的⾼斯函数'''def func(X) :X = [X[0] - mean[0], X[1] - mean[1]]B = [[variance[0], coefficient * stand_deviation[0] * stand_deviation[1]],[coefficient * stand_deviation[0] * stand_deviation[1], variance[1]]] inv_B = numpy.linalg.inv(B)A = inv_BB_val = (1.0 - coefficient**2) * variance[0] * variance[1]tmp1 = 2*math.pi * (B_val ** 0.5)X = numpy.array([X])tmp2 = (-0.5) * numpy.dot(numpy.dot(X, A), X.T)res = 1.0 / tmp1 * (math.e ** tmp2)return resreturn funcdef f(X, funcs, class_ps, index) :'''贝叶斯概率计算函数'''tmp1 = funcs[index](X) * class_ps[index]tmp2 = funcs[0](X) * class_ps[0] + funcs[1](X) * class_ps[1]return tmp1 / tmp2def classify(X,funcs,class_ps,labels) :'''基于最⼩错误率的贝叶斯判别分类。
实验一图像的贝叶斯分类一、实验目的将模式识别方法与图像处理技术相结合,掌握利用最小错分概率贝叶斯分类器进行图像分类的基本方法,通过实验加深对基本概念的理解。
二、实验仪器设备及软件HP D538、MATLAB三、实验原理1 基本原理阈值化分割算法是计算机视觉中的常用算法,对灰度图象的阈值分割就是先确定一个处于图像灰度取值范围内的灰度阈值,然后将图像中每个像素的灰度值与这个阈值相比较。
并根据比较的结果将对应的像素划分为两类,灰度值大于阈值的像素划分为一类,小于阈值的划分为另一类,等于阈值的可任意划分到两类中的任何一类。
此过程中,确定阈值是分割的关键。
对一般的图像进行分割处理通常对图像的灰度分布有一定的假设,或者说是基于一定的图像模型。
最常用的模型可描述如下:假设图像由具有单峰灰度分布的目标和背景组成,处于目标和背景内部相邻像素间的灰度值是高度相关的,但处于目标和背景交界处两边的像素灰度值有较大差别,此时,图像的灰度直方图基本上可看作是由分别对应于目标和背景的两个单峰直方图混合构成。
而且这两个分布应大小接近,且均值足够远,方差足够小,这种情况下直方图呈现较明显的双峰。
类似地,如果图像中包含多个单峰灰度目标,则直方图可能呈现较明显的多峰。
上述图像模型只是理想情况,有时图像中目标和背景的灰度值有部分交错。
这时如用全局阈值进行分割必然会产生一定的误差。
分割误差包括将目标分为背景和将背景分为目标两大类。
实际应用中应尽量减小错误分割的概率,常用的一种方法为选取最优阈值。
这里所谓的最优阈值,就是指能使误分割概率最小的分割阈值。
图像的直方图可以看成是对灰度值概率分布密度函数的一种近似。
如一幅图像中只包含目标和背景两类灰度区域,那么直方图所代表的灰度值概率密度函数可以表示为目标和背景两类灰度值概率密度函数的加权和。
如果概率密度函数形式已知,就有可能计算出使目标和背景两类误分割概率最小的最优阈值。
假设目标与背景两类像素值均服从正态分布且混有加性高斯噪声,上述分类问题可以使用模式识别中的最小错分概率贝叶斯分类器来解决。
模式识别习题及答案第⼀章绪论1.什么是模式具体事物所具有的信息。
模式所指的不是事物本⾝,⽽是我们从事物中获得的___信息__。
2.模式识别的定义让计算机来判断事物。
3.模式识别系统主要由哪些部分组成数据获取—预处理—特征提取与选择—分类器设计/ 分类决策。
第⼆章贝叶斯决策理论1.最⼩错误率贝叶斯决策过程答:已知先验概率,类条件概率。
利⽤贝叶斯公式得到后验概率。
根据后验概率⼤⼩进⾏决策分析。
2.最⼩错误率贝叶斯分类器设计过程答:根据训练数据求出先验概率类条件概率分布利⽤贝叶斯公式得到后验概率如果输⼊待测样本X ,计算X 的后验概率根据后验概率⼤⼩进⾏分类决策分析。
3.最⼩错误率贝叶斯决策规则有哪⼏种常⽤的表⽰形式答:4.贝叶斯决策为什么称为最⼩错误率贝叶斯决策答:最⼩错误率Bayes 决策使得每个观测值下的条件错误率最⼩因⽽保证了(平均)错误率最⼩。
Bayes 决策是最优决策:即,能使决策错误率最⼩。
5.贝叶斯决策是由先验概率和(类条件概率)概率,推导(后验概率)概率,然后利⽤这个概率进⾏决策。
6.利⽤乘法法则和全概率公式证明贝叶斯公式答:∑====m j Aj p Aj B p B p A p A B p B p B A p AB p 1)()|()()()|()()|()(所以推出贝叶斯公式7.朴素贝叶斯⽅法的条件独⽴假设是(P(x| ωi) =P(x1, x2, …, xn | ωi)= P(x1| ωi) P(x2| ωi)… P(xn| ωi))8.怎样利⽤朴素贝叶斯⽅法获得各个属性的类条件概率分布答:假设各属性独⽴,P(x| ωi) =P(x1, x2, …, xn | ωi) = P(x1| ωi) P(x2| ωi)… P(xn| ωi)后验概率:P(ωi|x) = P(ωi) P(x1| ωi) P(x2| ωi)… P(xn| ωi)类别清晰的直接分类算,如果是数据连续的,假设属性服从正态分布,算出每个类的均值⽅差,最后得到类条件概率分布。
最小风险贝叶斯决策判决规则1. 走进最小风险的世界你有没有过这种经历?你站在一个十字路口,不知道该往哪边走。
左边可能有更美丽的风景,但也可能遇到堵车;右边看似平淡无奇,但也许会有惊喜。
决定究竟走哪边,真是让人抓狂。
其实,这就像是贝叶斯决策中的一个经典问题:如何在不确定的情况下做出最优选择?听起来复杂对吧?别担心,让我们一步步来解开这个谜团。
2. 贝叶斯决策规则大揭秘2.1 贝叶斯的魔法贝叶斯决策规则的核心思想就是最小化风险。
我们先得了解什么是风险。
想象一下,你在赌场里,拿着一把筹码,面前有一副扑克牌。
你能选择赌一手,但不确定对手的牌有多强。
你知道,如果你选择错了,可能会输钱;如果选择对了,可能会赢大钱。
最小风险的意思就是在这张扑克牌游戏中,怎么才能让你输钱的概率最小,也就是风险最小。
2.2 如何选择最小风险的路径回到我们的十字路口问题。
假如你想用贝叶斯决策规则来决定走哪条路,首先,你需要知道每条路的可能结果和这些结果的概率。
简单来说,你得了解每条路可能带来的好事和坏事的概率。
比如,左边的路你知道可能会遇到拥堵,概率是50%,而右边的路,你知道它的拥堵概率只有20%。
这时候,你就需要计算走每条路的期望风险。
期望风险就是对所有可能结果的风险进行加权平均。
简单点说,就是把每条路的所有可能坏结果的风险加起来,看哪个路的综合风险最小。
听起来是不是有点像在做数学题?别担心,做这种选择题其实就像是你在超市挑选打折商品,挑那个最划算的就对了。
3. 风险最小化的妙招3.1 把风险控制在合理范围内在现实生活中,我们面临的风险多得数不过来,比如投资股市、选择工作、甚至是买房子。
最小风险贝叶斯决策规则就像是你手里的一个万能工具,可以帮助你在这些选择中做出更理智的决定。
想象一下,你要投资一个新项目。
你可以用贝叶斯方法来估算这个项目的成功概率和可能带来的损失。
你计算出每种可能结果的风险,然后把它们加权,看看哪种投资最能让你的钱包安稳。
一、实验意义及目的1、掌握贝叶斯判别定理2、能利用matlab编程实现贝叶斯分类器设计3、熟悉基于matlab的算法处理函数,并能够利用算法解决简单问题二、算法原理贝叶斯定理是关于随机事件A和B的条件概率(或边缘概率)的一则定理。
其中P(A|B)是在B发生的情况下A发生的可能性公式为:贝叶斯法则:当分析样本大到接近总体数时,样本中事件发生的概率将接近于总体中事件发生的概率。
内容:(1)两类w服从正态分布,设计基于最小错误率的贝叶斯分类器,对数据进行分类。
(2)使用matlab进行Bayes判别的相关函数,实现上述要求。
(3)针对(1)中的数据,自由给出损失表,并对数据实现基于最小风险的贝叶斯分类。
三、实验内容(1)尝两类w服从正态分布,设计基于最小错误率的贝叶斯分类器,对数据进行分类。
代码清单:clc;clear all;meas=[0 0;2 0;2 2;0 2;4 4;6 4;6 6;4 6];%8x2矩阵这里一行一行2个特征[N n]=size(meas);species={'one';'one';'one';'one';'two';'two';'two';'two'};%这里也对应一行一行的sta=tabulate(species)[c k]=size(sta);priorp=zeros(c,1);for i=1:cpriorp(i)=cell2mat(sta(i,k))/100;%计算概率end%cell2mat(sta(:,2:3)) 提取数组中的数据本来sta数组中数据为矩阵不能直接用%估算类条件概率参数cpmean=zeros(c,n);cpcov=zeros(n,n,c);for i=1:ccpmean(i,:)=mean(meas(strmatch(char(sta(i,1)),species,'exact'),:));%exact精确查找cpmean放的每一类的均值点几类就几行cpcov(:,:,i)=cov(meas(strmatch(char(sta(i,1)),species,'exact'),:))*(N*priorp(i)-1)/(N*priorp(i));end%求(3 1)的后验概率x=[3 1];postp=zeros(c,1);for i=1:cpostp(i)=priorp(i)*exp(-(x-cpmean(i,:))*inv(cpcov(:,:,i))*(x-cpmean(i,:))'/2)/((2*pi)^(n/2)*det(cpcov(:,:,i)));endif postp(1)>postp(2)disp('第一类');elsedisp('第二类');end运行结果:(2)使用matlab进行Bayes判别的相关函数,实现上述要求。
贝叶斯误差(Bayes Error Rate)是指在现有特征集上,任意可以基于特征输入进行随机输出的分类器所能达到的最小误差。
换句话说,它是分类问题中理论上可能达到的最佳性能。
要计算贝叶斯误差,我们需要知道每个类别的先验概率(即每个类别在数据集中出现的频率)以及每个类别下每个特征的条件概率。
然后,我们可以使用这些概率来计算每个样本属于每个类别的后验概率,并选择具有最高后验概率的类别作为预测类别。
贝叶斯误差的计算公式为:贝叶斯误差= 1 -最大后验概率
其中,最大后验概率是指在所有可能的类别中,具有最高后验概率的类别的概率。
举个例子,假设我们有一个二分类问题,其中类别1的先验概率为0.6,类别2的先验概率为0.4。
对于某个特定的样本,类别1的条件概率为0.8,类别2的条件概率为0.2。
那么,该样本属于类别1的后验概率为:
后验概率(类别1)= (先验概率(类别1)* 条件概率(类别1))/ (先验概率(类别1)* 条件概率(类别1)+ 先验概率(类别2)* 条件概率(类别2))
= (0.6 * 0.8) / (0.6 * 0.8 + 0.4 * 0.2)
= 0.9
因此,该样本属于类别1的最大后验概率为0.9,所以贝叶斯误差为1 - 0.9 = 0.1,即10%。
需要注意的是,贝叶斯误差是一个理论上的值,实际上很难达到,因为我们需要知道每个类别下每个特征的条件概率,这在现实世界中往往是不可行的。
但是,贝叶斯误差为我们提供了一个评估分类器性能的理论上限。
1。
实验一 Bayes 分类器设计【实验目的】对模式识别有一个初步的理解,能够根据自己的设计对贝叶斯决策理论算法有一个深刻地认识,理解二类分类器的设计原理。
【实验原理】最小风险贝叶斯决策可按下列步骤进行:(1)在已知)(i P ω,)(i X P ω,i=1,…,c 及给出待识别的X 的情况下,根据贝叶斯公式计算出后验概率: ∑==cj iii i i P X P P X P X P 1)()()()()(ωωωωω j=1,…,x(2)利用计算出的后验概率及决策表,按下面的公式计算出采取i a ,i=1,…,a 的条件风险∑==cj j jii X P a X a R 1)(),()(ωωλ,i=1,2,…,a(3)对(2)中得到的a 个条件风险值)(X a R i ,i=1,…,a 进行比较,找出使其条件风险最小的决策k a ,即()()1,min k i i aR a x R a x ==则k a 就是最小风险贝叶斯决策。
【实验内容】假定某个局部区域细胞识别中正常(1ω)和非正常(2ω)两类先验概率分别为 正常状态:P (1ω)=0.9; 异常状态:P (2ω)=0.1。
现有一系列待观察的细胞,其观察值为x :-3.9847 -3.5549 -1.2401 -0.9780 -0.7932 -2.8531 -2.7605 -3.7287 -3.5414 -2.2692 -3.4549 -3.0752 -3.9934 2.8792 -0.9780 0.7932 1.1882 3.0682-1.5799 -1.4885 -0.7431 -0.4221 -1.1186 4.2532 已知类条件概率是的曲线如下图:)|(1ωx p )|(2ωx p 类条件概率分布正态分布分别为N (-2,0.25)、N (2,4)试对观察的结果进行分类。
【实验要求】1)用matlab 完成基于最小错误率的贝叶斯分类器的设计,要求程序相应语句有说明文字,要求有子程序的调用过程。
Bayes分类器设计实验⼆ Bayes 分类器设计⼀、实验⽬的通过实验,加深对统计判决与概率密度估计基本思想、⽅法的认识,了解影响Bayes 分类器性能的因素,掌握基于Bayes 决策理论的随机模式分类的原理与⽅法。
⼆、实验内容设计Bayes 决策理论的随机模式分类器。
假定某个局部区域细胞识别中正常(a 1)与⾮正常(a 2)两类先验概率分别为正常状态:P(a 1)=0、9; 异常状态:P(a 2)=0、1。
三、⽅法⼿段Bayes 分类器的基本思想就是依据类的概率、概密,按照某种准则使分类结果从统计上讲就是最佳的。
换⾔之,根据类的概率、概密将模式空间划分成若⼲个⼦空间,在此基础上形成模式分类的判决规则。
准则函数不同,所导出的判决规则就不同,分类结果也不同。
使⽤哪种准则或⽅法应根据具体问题来确定。
四、Bayes 算法1、实验原理多元正太分布的概率密度函数由下式定义112211()exp ()()2(2)T dp X X X µµπ-??=--∑-∑ 由最⼩错误概率判决规则,可得采⽤如下的函数作为判别函数()(|)(),1,2,,i i i g x p X P i N ωω==L这⾥,()i P ω为类别i ω发⽣的先验概率,(|)i p X ω为类别i ω的类条件概率密度函数,⽽N 为类别数。
设类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p X ω,i=1,2,……,N 服从正态分布,即有(|)i p X ω~(,)i i N µ∑,那么上式就可以写为1122()1()exp ()(),1,2,,2(2)T i i dP g X X X i N ωµµπ-??=--∑-=∑L由于对数函数为单调变化的函数,⽤上式右端取对数后得到的新的判别函数替代原来的判别函数()i g X 不会改变相应分类器的性能。
因此,可取111()()()ln ()ln ln(2)222T i i i i i i d g X X X P µµωπ-=--∑-+-∑- 显然,上式中的第⼆项与样本所属类别⽆关,将其从判别函数中消去,不会改变分类结果。
贝叶斯分类器设计原理与实现贝叶斯分类器是一种基于贝叶斯定理的机器学习算法,常被用于文本分类、垃圾邮件过滤等任务。
本文将介绍贝叶斯分类器的设计原理和实现。
一、贝叶斯分类器的原理贝叶斯分类器基于贝叶斯定理,该定理描述了在已知一些先验条件下,如何通过新的观测数据来更新我们对于某个事件发生概率的判断。
在分类任务中,我们希望通过已知的特征,预测出一个样本属于某一类别的概率。
在贝叶斯分类器中,我们通过计算后验概率来决定样本的分类。
后验概率是指在已知某个条件下,事件发生的概率。
根据贝叶斯定理,后验概率可以通过先验概率和条件概率来计算。
先验概率是指在没有任何其他信息的情况下,事件发生的概率;条件概率是指在已知其他相关信息的情况下,事件发生的概率。
贝叶斯分类器根据特征的条件独立性假设,将样本的特征表示为一个向量。
通过训练数据,我们可以计算出每个特征在不同类别中的条件概率。
当有一个新的样本需要分类时,我们可以根据贝叶斯定理和特征的条件独立性假设,计算出该样本属于每个类别的后验概率,从而实现分类。
二、贝叶斯分类器的实现贝叶斯分类器的实现主要包括训练和预测两个步骤。
1. 训练过程训练过程中,我们需要从已知的训练数据中学习每个特征在不同类别下的条件概率。
首先,我们需要统计每个类别出现的频率,即先验概率。
然后,对于每个特征,我们需要统计它在每个类别下的频率,并计算出条件概率。
可以使用频率计数或者平滑方法来估计这些概率。
2. 预测过程预测过程中,我们根据已训练好的模型,计算出待分类样本属于每个类别的后验概率,并选择具有最大后验概率的类别作为最终的分类结果。
为了避免概率下溢问题,通常会将概率取对数,并使用对数概率进行计算。
三、贝叶斯分类器的应用贝叶斯分类器在自然语言处理领域有广泛的应用,尤其是文本分类和垃圾邮件过滤。
在文本分类任务中,贝叶斯分类器可以通过学习已有的标记文本,自动将新的文本分类到相应的类别中。
在垃圾邮件过滤任务中,贝叶斯分类器可以通过学习已有的垃圾邮件和正常邮件,自动判断新的邮件是否为垃圾邮件。
一、 实验目的1. 掌握密度函数监督参数估计方法;2. 掌握贝叶斯最小错误概率分类器设计方法。
二、 实验原理贝叶斯分类器是各种分类器中分类错误概率最小或者在预先给定代价的情况下平均风险最小的分类器。
它的设计方法是一种最基本的统计分类方法。
其分类原理是通过某对象的先验概率,利用贝叶斯公式计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。
对于两类分类问题,已知先验概率P (ω1)和 P (ω2),以及类别标号 ω1和ω2,得到相应的类条件概率密度P (x |ω1), P (x|ω2), 由贝叶斯公式:计算得到条件概率P (ωi |x) (i=1,2),又称为后验概率。
如果:P (ωi |x)=max P (ωi |x),x ∈ ωi或者:P (ω1|x) > P (ω2|x),x ∈ ω1P (ω2|x) > P (ω1|x),x ∈ ω2三、 实验内容对于一个两类分类问题,设两类的先验概率相同(12()()P P ωω=),两类的类条件概率密度函数服从二维正态分布,即111(|)~(,)P N ωx μΣ 222(|)~(,)P N ωx μΣ其中,1[3,6]T =μ,10.5002⎡⎤=⎢⎥⎣⎦Σ,1[3,2]T =-μ,12002⎡⎤=⎢⎥⎣⎦Σ。
1.生成两类模式随机样本点并进行分类;2.设计最大似然估计算法对两类类条件概率密度函数进行估计;3.用2中估计的类条件概率密度函数设计最小错误概率贝叶斯分类器,实现对两类样本的分类。
四、实验步骤1.产生训练样本根据实验提供的先验均值向量和协方差矩阵,利用编写的multivrandn函数构造二维正态分布,分别产生N=500及N=1000个样本,所得结果如图1.1及1.2所示。
图1.1两类训练样本(N=500)图1.2两类训练样本(N=1000)2. 参数估计对产生的样本进行最大似然估计,估计出样本二维正态分布的均值向量和协方差矩阵。
其中,。
对于样本N=500估计结果如下:μ1=[3.0575 6.0294],μ2=[2.9404 −1.9881],∑1=[0.47340.00520.0052 2.1152],∑2=[2.1241−0.1233−0.1233 2.0153]对于样本N=1000估计结果如下:μ1=[3.0072 5.9923],μ2=[2.9869 −1.9336],∑1=[0.54990.04880.0488 2.0033],∑2=[1.98410.05250.0525 1.8102]3. 分类器设计根据上面得出的参数估计结果和贝叶斯最大后验概率判决准则设计分类器。
当,则。
设计分类函数,对样本进行分类判决。
例如对类别1中的第一个样本进行分类,结果如图2所示:图2.分类结果对两组样本进行分类,运用matlab 理论分别计算出N=500及N=1000个样本的分界线,结果如图3.1及3.2所示:图3.1两组样本分类结果(N=500)图3.2两组样本分类结果(N=1000)五、实验分析1.在产生样本的过程中,利用二维正态分布函数函数产生大量样本,经过均值和协方差矩阵的估计后可以看出:①随着样本数量N的增加,估计出的均值μ更接近于真实值;②方差相对变化较大,即样本数据的波动较大,不确定性越大。
故样本数越多,分类器将两类样本分离的会更加清楚,分类器的性能越好。
2.参数估计完全按照最大似然估计过程,结果如上所示,由于样本产生较好且数量较大,估计值也比较准确,从反面验证了参数估计过程的正确性。
3.根据最大后验概率判决准则,利用估计出的参数设计分类器,两组样本分类结果如图3.1及3.2所示,可以看出:①N=500和N=1000时均有个别误差,大部分样本分类正确;②随着样本数的增加,分类错误的样本数越少,即错误率越小,分类器的性能越好。
4.添加干扰,检测实验结果在产生样本时,添加均匀分布的一个干扰项,再次验证参数估计和分类结果如下:μ1=[8.5751 11.6213],μ2=[8.4160 3.7158],∑1=[7.4464−0.8548−0.85488.9503],∑2=[9.1159 1.24931.24938.8853]可以看出,得到的均值及方差估计值与真实值差距较大。
分类结果如图4所示:图4样本分类结果(有干扰)从分类结果可知,样本混淆现象严重,分类错误的样本数较多。
因此,在有干扰的情况下该分类器的训练误差较大,错误率高,性能较差。
六、程序代码本次实验程序代码共分为三部分:主程序及两个函数程序。
1.主程序如下:①N=500clear all;close all;clc;d=2; %二维pw1=0.5;pw2=0.5;u1=[3,6];u2=[3,-2]; %均值向量sigma1=[0.5,0;0,2]; %协方差矩阵sigma2=[2,0;0,2];N=500; %训练样本数samples1=multivrandn(u1,sigma1,N);samples2=multivrandn(u2,sigma2,N);figure(1);for i=1:Nplot(samples1(i,1),samples1(i,2),'b*');hold on;plot(samples2(i,1),samples2(i,2),'ro');hold on;endlegend('训练样本1','训练样本2');hold on;u_1=mean(samples1,1); %估计均值u_2=mean(samples2,1);sig1=zeros(2,2); %协方差矩阵的估计for i=1:Ntemp=(samples1(i,:)-u_1)'*(samples1(i,:)-u_1);sig1=sig1+temp;endsig1=sig1/N; %估计协方差矩阵sig2=zeros(2,2);for i=1:Ntemp=(samples2(i,:)-u_2)'*(samples2(i,:)-u_2);sig2=sig2+temp;endsig2=sig2/N;%% 画出实际分类线syms x1 x2f1=(1/(sqrt(2*pi).^d)./det(sig1).*exp(-1/2*([x1 x2]-u_1)*inv(sig1)*([x1 x2]-u_1)')); f2=(1/(sqrt(2*pi).^d)./det(sig2).*exp(-1/2*([x1 x2]-u_2)*inv(sig2)*([x1 x2]-u_2)')); f3=f2/f1-pw1/pw2;ezplot(f3,[-4,10]);hold on;text(-2,4,'分界线');②N=1000clear all;close all;clc;d=2; %二维pw1=0.5;pw2=0.5;u1=[3,6];u2=[3,-2]; %均值向量sigma1=[0.5,0;0,2]; %协方差矩阵sigma2=[2,0;0,2];N=1000; %训练样本数samples1=multivrandn(u1,sigma1,N);samples2=multivrandn(u2,sigma2,N);figure(1);for i=1:Nplot(samples1(i,1),samples1(i,2),'b*');hold on;plot(samples2(i,1),samples2(i,2),'ro');hold on;endlegend('训练样本1','训练样本2');hold on;u_1=mean(samples1,1); %估计均值u_2=mean(samples2,1);sig1=zeros(2,2); %协方差矩阵的估计for i=1:Ntemp=(samples1(i,:)-u_1)'*(samples1(i,:)-u_1);sig1=sig1+temp;endsig1=sig1/N; %估计协方差矩阵sig2=zeros(2,2);for i=1:Ntemp=(samples2(i,:)-u_2)'*(samples2(i,:)-u_2);sig2=sig2+temp;endsig2=sig2/N;%% 画出实际分类线syms x1 x2f1=(1/(sqrt(2*pi).^d)./det(sig1).*exp(-1/2*([x1 x2]-u_1)*inv(sig1)*([x1 x2]-u_1)'));f2=(1/(sqrt(2*pi).^d)./det(sig2).*exp(-1/2*([x1 x2]-u_2)*inv(sig2)*([x1 x2]-u_2)'));f3=f2/f1-pw1/pw2;ezplot(f3,[-4,10]);hold on;text(-2,4,'分界线');2.二维正态分布样本产生函数multivrandnfunction Y = multivrandn(u,R,M)% this function draws M samples from N(u,R)% where u is the mean vector(row) and R is the covariance matrix which must be positive definite n = length(u); % get the dimensionC = chol(R); % perform cholesky decomp R = C'CX = randn(M,n); % draw M samples from N(0,I)Z=unifrnd(1,10,M,n);Y = X*C +Z+ ones(M,1)*u;end3.分类判决函数分类fenlei( samples1(1,:),pw1,pw2,u_1,u_2,sig1,sig2,d )function fenlei(samples1(1,:),pw1,pw2,u_1,u_2,sig1,sig2,d )%UNTITLED2 Summary of this function goes here% Detailed explanation goes heref1=(1/(sqrt(2*pi).^d)./det(sig1).*exp(-1/2*(x-u_1)*inv(sig1)*(x-u_1)')); f2=(1/(sqrt(2*pi).^d)./det(sig2).*exp(-1/2*(x-u_2)*inv(sig2)*(x-u_2)')); if (f1/f2)>(pw2/pw1)disp('样本属于第一类');elsedisp('样本属于第二类');endend。