《模式识别》实验报告-贝叶斯分类
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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); % 取测试数据