《模式识别》实验报告-贝叶斯分类

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《模式识别》实验报告

---最小错误率贝叶斯决策分类

一、实验原理

对于具有多个特征参数的样本(如本实验的iris 数据样本有4d =个参数),其正态分布的概率密度函数可定义为

11

22

11()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 ∑μ,那么上式就可以写为

112

2

()1()exp ()(),1,2,32(2)T i i d

P g i ωπ-⎧⎫

=

-∑=⎨⎬⎩⎭

x x -μx -μ

对上式右端取对数,可得

111()()()ln ()ln ln(2)222

T i i i i d

g P ωπ-=-∑+-∑-i i x x -μx -μ

上式中的第二项与样本所属类别无关,将其从判别函数中消去,不会改变分类结果。则判别函数()i g x 可简化为以下形式

111

()()()ln ()ln 22

T i i i i g P ω-=-∑+-∑i i x x -μx -μ

二、实验步骤

(1)从Iris.txt 文件中读取估计参数用的样本,每一类样本抽出前40个,分别求其均值,公式如下

11,2,3i

i i

i

i N ωωω∈=

=∑

x μx

clear

% 原始数据导入

iris = load('C:\MATLAB7\work\模式识别\iris.txt'); N=40;%每组取N=40个样本

%求第一类样本均值 for i = 1:N for j = 1:4

w1(i,j) = iris(i,j+1); end end

sumx1 = sum(w1,1); for i=1:4

meanx1(1,i)=sumx1(1,i)/N; end

%求第二类样本均值 for i = 1:N

for j = 1:4

w2(i,j) = iris(i+50,j+1); end end

sumx2 = sum(w2,1); for i=1:4

meanx2(1,i)=sumx2(1,i)/N; end

%求第三类样本均值 for i = 1:N for j = 1:4

w3(i,j) = iris(i+100,j+1); end end

sumx3 = sum(w3,1); for i=1:4

meanx3(1,i)=sumx3(1,i)/N; end

(2)求每一类样本的协方差矩阵、逆矩阵1i -∑以及协方差矩阵的行列式i ∑, 协方差矩阵计算公式如下

1

1()()

,1,2,3,41i i

i N i jk

lj j lk k l i x x j k N ωωσμμ==--=-∑

其中

lj x 代表i ω类的第l 个样本,第j 个特征值;

i

j ωμ代表i ω类的i N 个样品第j 个特征的平均值

lk x 代表i ω类的第l 个样品,第k 个特征值;

i

w k μ代表i ω类的i N 个样品第k 个特征的平均值。

%求第一类样本协方差矩阵 z1(4,4) = 0; var1(4,4) = 0; for i=1:4 for j=1:4 for k=1:N

z1(i,j)=z1(i,j)+(w1(k,i)-

meanx1(1,i))*(w1(k,j)-meanx1(1,j)); end

var1(i,j) = z1(i,j) / (N-1); end end

%求第二类样本协方差矩阵

z2(4,4) = 0 ; var2(4,4) = 0; for i=1:4 for j=1:4 for k=1:N

z2(i,j)=z2(i,j)+

(w2(k,i)-meanx2(1,i))*(w2(k,j)-meanx2(1,j)); end

ar2(i,j) = z2(i,j) / (N-1); end end

%求第三类样本协方差矩阵 z3(4,4) = 0 ; var3(4,4) = 0; for i=1:4 for j=1:4 for k=1:N

z3(i,j)=z3(i,j)+(w3(k,i)-

meanx3(1,i))*(w3(k,j)-meanx3(1,j)); end

var3(i,j) = z3(i,j) /( N-1); end end

%求各类的协方差矩阵逆矩阵及行列式 var1_inv = [];var1_det = []; var2_inv = [];var2_det = []; var3_inv = [];var3_det = []; var1_inv = inv(var1) var2_inv = inv(var2) var3_inv = inv(var3) var1_det = det(var1) var2_det = det(var2) var3_det = det(var3)

(3)对三个类别,分别取每组剩下的10个样本,每两组进行分类。由于每一类样本都相等,且每一类选取用作训练的样本也相等,在每两组进行分类时,待分类样本的类先验概率()0.5i P ω=。将各个样本代入判别函数

111

()()()ln ()ln 22

T i i i i g P ω-=-∑+-∑i i x x -μx -μ

根据判决规则,如果使()()i j g g >x x 对一切j i ≠成立,则将x 归为i ω类。

若取第一类后10个数据和第二类进行分类,代码如下

M=10; for i = 1:M for j = 1:4

test(i,j) = iris(i+50,j+1); % 取测试数据

相关文档
最新文档