模式识别实验一

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

, n 是 n 维均值
向 量 , C i 是 n n 协 方 差 矩 阵 ; Ci 为 矩 阵 Ci 的 行 列 式 。 且 i Ei x ,
Ci Ei

x
i
x
i , Ei x 表示对类别属于 i 的模式作数学期望运算。
T
因此判别函数可表示为 J i ( x) P( x | i ) P(i ) 对判别函数取自然对数
1 1 J i ( x) ( x i ) Ci1 ( x i ) ln P(i ) ln Ci 2 2
然后根据(1)中所述最大后验准则判断样本所属类别。 三、实验过程 实验数据: IRIS 数据集 实验假设: 各类数据服从正态分布 实验方法: 最大后验概率 实验环境: MATLAB 2010b (1)数据导入
A , B 可设置每种类型的先验概率 P A , P B 。针对某一训练数据 x 计
算其判别函数 J A x , J B x ,比较两个值的大小,哪个最大,就可判断该数据 属于哪一类。最后统计分类器判决结果,设置矩阵存储被错误分类的数据,统计 A,B 两类测试数据的误判数,计算误判率。 %---------分类器测试----------% %选择分类组(w1,w2)(w1,w3)(w2,w3) %test = 1代表(w1,w2)分类 %test = 2代表(w1,w3)分类 %test = 3代表(w2,w3)分类 test = 1; if test==1 avr_A = avr_w1';var_A = var_w1'; avr_B = avr_w2';var_B = var_w2'; %合并待测数据 data_test = [data_test_w1;data_test_w2]; end if test==2 avr_A = avr_w1';var_A = var_w1'; avr_B = avr_w3';var_B = var_w3'; %合并待测数据 data_test = [data_test_w1;data_test_w3]; end if test==3 avr_A = avr_w2';var_A = var_w2'; avr_B = avr_w3';var_B = var_w3'; %合并待测数据 data_test = [data_test_w2;data_test_w3]; end %s设置先验概率 P_wA = 1/2; P_wB = 1/2;
1 , 2 , 1 , 3 , 2 , 3 分类各进行一次实验,实验结果如下:
表 1 三种分类在一次实验中的误判率 错误发生组 误判数 ErrA ErrB ErrA ErrB
1 , 2
0 0 0 0
1 , 3
0 0 0 02 , 3 1 Fra bibliotek 0.04 0
1 1 n J i ( x) ( x i ) Ci1 ( x i ) ln P(i ) ln Ci ln(2 ) 2 2 2
所以可以将其从判别函数中去掉,不会改变分类结果。判别函数化简为
(5)
在样本维数相同的情况下, 上式中的最后一项为常数, 与样本所属类别无关,
%计算三类训练数据的协方差矩阵 var_w1 = cov(data_train_w1(:,:)); var_w2 = cov(data_train_w2(:,:)); var_w3 = cov(data_train_w3(:,:)); (4)分类器测试 在估计出三类数据的统计特征后,分类器训练完成。采用最大后验概率准则 进行分类。 实验中对三种类型数据进行两两比较判决。设参与比较的两位分别为
(6)
导入 iris_dataset.txt 文件中数据,并将三类数据分别存储,每个数据都为一 个 4 维行特征向量。 close all; clear all; clc; %---------数据导入----------% iris_dataset = load('iris_dataset.txt'); %分别存储3类数据 iris_w1 = iris_dataset(1:50,:); iris_w2 = iris_dataset(51:100,:); iris_w3 = iris_dataset(101:150,:);
则 x 1 则 x 2
(2)
p( x | i ) 称似然函数,将其代入(2)式中
p( x | 1 ) P(1 ) p( x | 2 ) P(2 ) p( x | 1 ) P(1 ) p( x | 2 ) P(2 )
(2)样本正态分布的贝叶斯分类器 对于具有多个特征参数的样本(本实验的 IRIS 数据为 n=4 维) 。假设本 实验所使用的 IRIS 鸢尾花数据中各类数据服从正态分布,则概率密度函数为
x2 xn ]
p x | i ,可以得出某样本属于各类别的概率,即后验概率。
P(i | x )
p x | i P(i ) , i 1, 2 P x
(1)
后验概率代表了 x 是属于 1 类的概率, x 来自 i* 类的概率大则判别 x 属于第
i* 类,即
P(1 | x) P(2 | x) P(1 | x) P(2 | x)
误判率
可见该种情况下分类器分类错误率低,效果良好。由于训练样本是随机抽取 的, 每次实验结果都不相同。 要想总结训练样本数和先验概率对分类结果的影响, 需要进行反复多次的实验, 本实验采用 Monte Carlo 法对两因素的影响进行讨论。 (2)训练样本数与先验分布对分类的影响 针对 1 , 2 两类数据进行分类,在训练样本数为 5,10,15,25,35 的 5 种情况下,和先验概率为 P A 0.5 P B 0.5 , P A 0.4 P B 0.6 ,
则 x 1 则 x 2
(3)
P( x | i )
1 (2 )
n 2
Ci
1
2
1 exp[ ( x i )T Ci1 ( x i )] 2
i 1, 2

(4)
其中, 特征向量 x [ x1 , x2 ,
, xn ] 是 n 维列向量,i 1, 2 ,
%初始化分类错误的向量集 err_A = []; err_B = []; for i=1:(50-NUM_train)*2 %导入测试数据 x = data_test(i,:)'; %计算测试向量的判决函数 J1 = -0.5*(x-avr_A)'*inv(var_A)*(x-avr_A)+log(P_wA)-0.5*log(det(var_A)); J2 = -0.5*(x-avr_B)'*inv(var_B)*(x-avr_B)+log(P_wB)-0.5*log(det(var_B)); %做出分类 if i<=(50-NUM_train) if J1<J2 %A类测试样本误判为B类 err_A = [err_A,x]; end end if i>(50-NUM_train) if J1>J2 %B类测试样本误判为A类 err_B = [err_B,x]; end end end %分类错误的向量 err_A err_B %计算错误数量 err_num_A = size(err_A,2) %A类测试样本的误判数 err_num_B = size(err_B,2) %B类测试样本的误判数 %计算错误率 err_rate_A = err_num_A/(50-NUM_train) %A类测试样本的误判率 err_rate_B = err_num_B/(50-NUM_train) %B类测试样本的误判率 四、实验结果与分析 (1)三类数据两两分类 设置训练样本数 NUM_train=25,先验概率 P A 0.5 , P B 0.5 。
%导入iris数据集
(2)抽取训练数据 设置每组训练数据个数 NUM_train,从每类 50 个数据中随机抽取 NUM_train 个向量作为训练数据并存储,剩余数据作为测试样本存储。 %---------数据导入----------% iris_dataset = load('iris_dataset.txt'); %分别存储3类数据 iris_w1 = iris_dataset(1:50,:); iris_w2 = iris_dataset(51:100,:); iris_w3 = iris_dataset(101:150,:);
P A 0.2 P B 0.8 的 3 种情况下,各进行 200 次 Monte Carlo,统计平均误
判率,如下表所示
表 2 第一类和第二类数据分类误判率
1 , 2
P A 0.5 P B 0.5 P A 0.4 P B 0.6 P A 0.2 P B 0.8
%导入iris数据集
%---------抽取训练数据----------% %各组训练数据个数 NUM_train = 30; %在各组中随机抽取NUM_train个训练样本 %随机打乱各组数据顺序 temp_w1= randperm(50); temp_w2= randperm(50); temp_w3= randperm(50); %取随机打乱顺序后的前NUM_train个数据作为训练样本,并存储 %第5列数据代表其所属分类 for i=1:NUM_train data_train_w1(i,:) = iris_w1(temp_w1(i),:); data_train_w2(i,:) = iris_w2(temp_w2(i),:); data_train_w3(i,:) = iris_w3(temp_w3(i),:); end %选择非训练样本作为测试样本,并存储 %第5列数据代表其所属分类 for i=(NUM_train+1):50 data_test_w1(i-NUM_train,:) = iris_w1(temp_w1(i),:); data_test_w2(i-NUM_train,:) = iris_w2(temp_w2(i),:); data_test_w3(i-NUM_train,:) = iris_w3(temp_w3(i),:); end (3)分类器训练 计算各类训练数据的均值矢量和协方差矩阵。 %---------分类器训练----------% %计算三类训练数据的均值向量 avr_w1 = mean(data_train_w1(:,:)); avr_w2 = mean(data_train_w2(:,:)); avr_w3 = mean(data_train_w3(:,:));
一、实验目的 1. 掌握统计判别问题的含义,理解贝叶斯判别原理。 2. 编写两类正态分布模式的贝叶斯分类程序。 3. 观察各种因素对分类错误概率的影响。 二、实验原理 模式识别的分类问题是根据识别对象特征的观察值将其分到某个类别中去, 统计决策理论是处理模式分类问题的基本理论之一。 贝叶斯判别原理是统计模式 识别中的一个基本方法。 (1)贝叶斯判别原理 贝叶斯分类又称为最大后验概率(MAP)分类,其基本原理如下: 两种类别标号分别为 1 , 2 a) 分类所使用的特征为 n 维特征向量 x [ x1 b) 两类先验概率值分别为 P 1 , P 2 c) 两类条件概率密度函数分别为 p x | 1 , p x | 2 对于两类别 i , i 1, 2分类问题,已知先验概率 P(i ) 及条件概率密度函数
平均误判率 ErrA ErrB ErrA ErrB ErrA ErrB
相关文档
最新文档