模式识别报告 bayes分类
- 格式:docx
- 大小:85.29 KB
- 文档页数:7
实验一、二维随机数的产生1、实验目的(1) 学习采用Matlab 程序产生正态分布的二维随机数 (2) 掌握估计类均值向量和协方差矩阵的方法(3) 掌握类间离散度矩阵、类内离散度矩阵的计算方法(4) 熟悉matlab 中运用mvnrnd 函数产生二维随机数等matlab 语言2、实验原理多元正态分布概率密度函数:11()()2/21/21()(2)||T X X d p X eμμπ---∑-=∑其中:μ是d 维均值向量:Td E X μμμμ=={}[,,...,]12Σ是d ×d 维协方差矩阵:TE X X μμ∑=--[()()](1)估计类均值向量和协方差矩阵的估计 各类均值向量1ii X im X N ω∈=∑ 各类协方差矩阵1()()iTi iiX iX X N ωμμ∈∑=--∑(2)类间离散度矩阵、类内离散度矩阵的计算类内离散度矩阵:()()iTi iiX S X m X m ω∈=--∑, i=1,2总的类内离散度矩阵:12W S S S =+类间离散度矩阵:1212()()Tb S m m m m =--3、实验内容及要求产生两类均值向量、协方差矩阵如下的样本数据,每类样本各50个。
1[2,2]μ=--,11001⎡⎤∑=⎢⎥⎣⎦,2[2,2]μ=,21004⎡⎤∑=⎢⎥⎣⎦ (1)画出样本的分布图;(2) 编写程序,估计类均值向量和协方差矩阵;(3) 编写程序,计算类间离散度矩阵、类内离散度矩阵; (4)每类样本数增加到500个,重复(1)-(3)4、实验结果(1)、样本的分布图(2)、类均值向量、类协方差矩阵根据matlab 程序得出的类均值向量为:N=50 : m1=[-1.7160 -2.0374] m2=[2.1485 1.7678] N=500: m1=[-2.0379 -2.0352] m2=[2.0428 2.1270] 根据matlab 程序得出的类协方差矩阵为:N=50: ]0628.11354.01354.06428.1[1=∑ ∑--2]5687.40624.00624.08800.0[N=500:∑--1]0344.10162.00162.09187.0[∑2]9038.30211.00211.09939.0[(3)、类间离散度矩阵、类内离散度矩阵根据matlab 程序得出的类间离散度矩阵为:N=50: ]4828.147068.147068.149343.14[=bS N=500: ]3233.179843.169843.166519.16[b =S根据matlab 程序得出的类内离散度矩阵为:N=50:]0703.533088.73088.71052.78[1=S ]7397.2253966.13966.18975.42[2--=S ]8100.2789123.59123.50026.121[=W SN=500: ]5964.5167490.87490.86203.458[1--=S ]8.19438420.78420.70178.496[2=S ]4.24609071.09071.06381.954[--=W S5、结论由mvnrnd 函数产生的结果是一个N*D 的一个矩阵,在本实验中D 是2,N 是50和500.根据实验数据可以看出,当样本容量变多的时候,两个变量的总体误差变小,观测变量各个取值之间的差异程度减小。
《模式识别》实验报告---最小错误率贝叶斯决策分类一、实验原理对于具有多个特征参数的样本(如本实验的iris 数据样本有4d =个参数),其正态分布的概率密度函数可定义为112211()exp ()()2(2)T d p π-⎧⎫=--∑-⎨⎬⎩⎭∑x x μx μ 式中,12,,,d x x x ⎡⎤⎣⎦=x 是d 维行向量,12,,,d μμμ⎡⎤⎣⎦=μ是d 维行向量,∑是d d ⨯维协方差矩阵,1-∑是∑的逆矩阵,∑是∑的行列式。
本实验我们采用最小错误率的贝叶斯决策,使用如下的函数作为判别函数()(|)(),1,2,3i i i g p P i ωω==x x (3个类别)其中()i P ω为类别i ω发生的先验概率,(|)i p ωx 为类别i ω的类条件概率密度函数。
由其判决规则,如果使()()i j g g >x x 对一切j i ≠成立,则将x 归为i ω类。
我们根据假设:类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p ωx ,i=1,2,……,N 服从正态分布,即有(|)i p ωx ~(,)i i N ∑μ,那么上式就可以写为1122()1()exp ()(),1,2,32(2)T i i dP g i ωπ-⎧⎫=-∑=⎨⎬⎩⎭∑x x -μx -μ对上式右端取对数,可得111()()()ln ()ln ln(2)222T i i i i dg P ωπ-=-∑+-∑-i i x x -μx -μ上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。
则判别函数()i g x 可简化为以下形式111()()()ln ()ln 22T i i i i g P ω-=-∑+-∑i i x x -μx -μ二、实验步骤(1)从Iris.txt 文件中读取估计参数用的样本,每一类样本抽出前40个,分别求其均值,公式如下11,2,3ii iii N ωωω∈==∑x μxclear% 原始数据导入iris = load('C:\MATLAB7\work\模式识别\iris.txt'); N=40;%每组取N=40个样本%求第一类样本均值 for i = 1:N for j = 1:4w1(i,j) = iris(i,j+1); end endsumx1 = sum(w1,1); for i=1:4meanx1(1,i)=sumx1(1,i)/N; end%求第二类样本均值 for i = 1:N for j = 1:4 w2(i,j) = iris(i+50,j+1);end endsumx2 = sum(w2,1); for i=1:4meanx2(1,i)=sumx2(1,i)/N; end%求第三类样本均值 for i = 1:N for j = 1:4w3(i,j) = iris(i+100,j+1); end endsumx3 = sum(w3,1); for i=1:4meanx3(1,i)=sumx3(1,i)/N; end(2)求每一类样本的协方差矩阵、逆矩阵1i -∑以及协方差矩阵的行列式i ∑, 协方差矩阵计算公式如下11()(),1,2,3,41i ii N i jklj j lk k l i x x j k N ωωσμμ==--=-∑其中lj x 代表i ω类的第l 个样本,第j 个特征值;ij ωμ代表i ω类的i N 个样品第j 个特征的平均值lk x 代表i ω类的第l 个样品,第k 个特征值;iw k μ代表i ω类的i N 个样品第k 个特征的平均值。
西安交通大学《模式识别》实验一——IRIS正态分布假设下的贝叶斯分类吴娟梅硕20813112313030对于具有多个特征参数的样本(如本实验的iris 数据样本有4d =个参数),其正态分布的概率密度函数可定义为112211()exp ()()2(2)T dp π-⎧⎫=--∑-⎨⎬⎩⎭∑x x μx μ式中,12,,,d x x x ⎡⎤⎣⎦=x 是d 维行向量,12,,,d μμμ⎡⎤⎣⎦=μ 是d 维行向量,∑是d d ⨯维协方差矩阵,1-∑是∑的逆矩阵,∑是∑的行列式。
本实验我们采用最小错误率的贝叶斯决策,使用如下的函数作为判别函数()(|)(),1,2,3i i i g p P i ωω==x x (3个类别)其中()i P ω为类别i ω发生的先验概率,(|)i p ωx 为类别i ω的类条件概率密度函数。
由其判决规则,如果使()()i j g g >x x 对一切j i ≠成立,则将x 归为i ω类。
我们根据假设:类别i ω,i=1,2,……,N 的类条件概率密度函数(|)i p ωx ,i=1,2,……,N 服从正态分布,即有(|)i p ωx ~(,)i i N ∑μ,那么上式就可以写为1122()1()exp ()(),1,2,32(2)T i i dP g i ωπ-⎧⎫=-∑=⎨⎬⎩⎭∑x x -μx -μ对上式右端取对数,可得111()()()ln ()ln ln(2)222T i i i i dg P ωπ-=-∑+-∑-i i x x -μx -μ上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。
则判别函数()i g x 可简化为以下形式111()()()ln ()ln 22T i i i i g P ω-=-∑+-∑i i x x -μx -μ1.用部分数据来估计均值、协方差首先读入数据clear allclc% 原始数据导入,原数据以文本的形式存储,iris是一个L*12的矩阵,L为数据长度iris = load('C:\Documents andSettings\Administrator\IRIS_Data.txt');%求出数据长度Ldisplay('数据长度为') L=length(iris)%iris是一个L*12的矩阵,12列共分为三类数据,每类占4列%将数据分类存储于三个数组w1=iris(1:L,1:4);w2=iris(1:L,5:8);w3=iris(1:L,9:12);然后选取训练样本估计均值、协方差。
训练样本的选取有很多种方法,我们采用两种较为常见的方法进行选取。
方法一是顺序选取。
分别试取[1:10]、 [11:50]两组数据进行训练,用于对比训练数据多寡对于分类效果的影响。
%顺序选取,参数可调,待输入选取的训练样本的起始点和截止点display('请输入每类训练样本在顺序选取时的');N0 = input('数据起始点(大于0小于L的整数)N0=');Nj = input('数据截止点(大于N0小于L的整数)Nj=');display('则训练样本长度为')N=Nj-N0+1 %提取样本的统计特征值,均值和协方差display('用上述部分数据估计的三类样本均值、协方差依次为');mean1=mean(w1(N0:Nj,:))mean2=mean(w2(N0:Nj,:))mean3=mean(w3(N0:Nj,:))cov1=cov(w1(N0:Nj,:))cov2=cov(w2(N0:Nj,:))cov3=cov(w3(N0:Nj,:))方法二是随机选取N个数据。
试随机取N=10、N=40两组数据进行训练。
同样也是用于比对训练数据的多寡对分类器的性能有何影响。
clear allclc% 原始数据导入,原数据以文本的形式存储,iris是一个L*12的矩阵,L为数据长度iris = load('C:\Documents andSettings\Administrator\IRIS_Data.txt');%求出数据长度Ldisplay('数据长度为')L=length(iris)%iris是一个L*12的矩阵,12列共分为三类数据,每类占4列%将数据分类存储于三个数组w1=iris(1:L,1:4);w2=iris(1:L,5:8);w3=iris(1:L,9:12);%随机选取,参数可调,待输入选取的训练样本的个数NN=input('请输入每类训练样本在随机选取时的样本长度为N=');%随机选取N个训练样本,即产生N个不大于数据长度L的不重复的整数作为其样本序号Numberranddata=randperm(L);Number1=randdata(1:N);Number=sort(Number1);%提取样本的统计特征值,均值和协方差display('用上述部分数据估计的三类样本均值、协方差依次为'); mean1=mean(w1(Number,:)) mean2=mean(w2(Number,:)) mean3=mean(w3(Number,:)) cov1=cov(w1(Number,:)) cov2=cov(w2(Number,:)) cov3=cov(w3(Number,:))2.用后验概率去判断数据的类型首先选取测试分类数据。
令先验概率可变,即选取不同的测试数据组数进行实验。
试取测试数据组数为10、10、10,正常取值,来考查前述训练样本数对分类结果的影响。
再试取数据组数为试取数据组数为4、40、50;45、4、3进行分类。
研究当先验概率很小时对分类效果的影响。
%选取w1[N10:N1j],w2[N20:N2j],w3[N30:N3j]用作每类测试的分类样本,可变先验概率%顺序选取,参数可调,待输入选取的测试分类样本的起始点和截止点%1类测试分类数据display('请输入1类测试分类样本在顺序选取时的');N10 = input('数据起始点(大于0小于L的整数)N10=');N1j = input('数据截止点(大于N0小于L的整数)N1j=');display('则1类测试分类样本长度为')N1=N1j-N10+1test1=w1(N10:N1j,:);%2类测试分类数据display('请输入第2类测试分类样本在顺序选取时的');N20 = input('数据起始点(大于0小于L的整数)N20=');N2j = input('数据截止点(大于N0小于L的整数)N2j=');display('则第2类测试分类样本长度为')N2=N2j-N20+1test2=w1(N20:N2j,:);%3类测试分类数据display('请输入第3类测试分类样本在顺序选取时的');N30 = input('数据起始点(大于0小于L的整数)N30=');N3j = input('数据截止点(大于N0小于L的整数)N3j=');display('则第3类测试分类样本长度为')N3=N3j-N30+1test3=w1(N30:N3j,:);%选取的测试分类数据存入一个数组test test=[test1;test2;test3];然后分别两两分组,第1&2类、第2&3类、第1&3类,计算判别函数,判别分类正确率。
%计算协方差阵的行列式和逆cov1_det=det(cov1);cov2_det=det(cov2); cov3_det=det(cov3); cov1_inv=inv(cov1); cov2_inv=inv(cov2);cov3_inv=inv(cov3);%进行第1次实验,即第1&2分组实验display('对一二分组时第一、二类测试数据的先验概率(%)依次为');pw11=N1/(N1+N2)pw12=1-pw11rate11=0.0;rate12=0.0;fori = 1:(N1+N2)g11=(-0.5)*(test(i,:)-mean1)*cov1_inv*(test(i,: )'-mean1')-0.5*log(abs(cov1_det))+log(pw11);g12=(-0.5)*(test(i,:)-mean2)*cov2_inv*(test(i,: )'-mean2')-0.5*log(abs(cov2_det))+log(pw12);if g11>g12ifi<(N1+1)rate11=rate11+1;endelseifi>N1rate12=rate12+1;endendenddisplay('对一二分组时第一、二类测试数据的分类正确率(%)依次为为');rate11=rate11/N1*100rate12=rate12/N2*100%进行第2次实验,即第2&3分组实验display('对二三分组时第二、三类测试数据的先验概率(%)依次为');pw22=N2/(N2+N3)pw23=1-pw22rate22=0.0;rate23=0.0;fori = (N1+1):(N1+N2+N3)g22=(-0.5)*(test(i,:)-mean2)*cov2_inv*(test(i,: )'-mean2')-0.5*log(abs(cov2_det))+log(pw22);g23=(-0.5)*(test(i,:)-mean3)*cov3_inv*(test(i,:)'-mean3')-0.5*log(abs(cov3_det))+log(pw23);if g22>g23ifi<(N1+N2+1)rate22=rate22+1;endelseifi>(N1+N2)rate23=rate23+1;endendenddisplay('对二三分组时第二、三类测试数据的分类正确率(%)依次为');rate22=rate22/N2*100rate23=rate23/N3*100%进行第3次实验,即第1&3分组实验display('对一三分组时第一、三类测试数据的先验概率(%)依次为');pw31=N1/(N1+N3)pw33=1-pw31rate31=0.0;rate33=0.0;fori = [1:N1,N1+N2+1:N1+N2+N3]g31=(-0.5)*(test(i,:)-mean1)*cov1_inv*(test(i,: )'-mean1')-0.5*log(abs(cov1_det))+log(pw31);g33=(-0.5)*(test(i,:)-mean3)*cov3_inv*(test(i,: )'-mean3')-0.5*log(abs(cov3_det))+log(pw33);if g31>g33ifi<(N1+1)rate31=rate31+1;endelseifi>(N1+N2)rate33=rate33+1;endendenddisplay('对一三分组时第一、三类测试数据的分类正确率(%)依次为');rate31=rate31/N1*100 rate33=rate33/N3*100结果分析与结论结果分析一:试取测试数据组数为10、10、10,正常取值,来考查前述训练样本数对分类结果的影响。