利用贝叶斯判别函数设计分类器

该博客介绍了如何利用贝叶斯判别函数设计分类器,通过实例分析了一维、二维和三维特征值下的分类效果,探讨了数据维度对训练误差的影响。实验结果显示,随着数据维度增加,误分点的百分比呈现下降趋势,但可能存在特征间相互影响的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

详情请参阅《模式分类》第二版第二章上机练习2.5节第2题

数据说明:

有w1,w2,w3三组样本数据如下(符合正态分布):
这里写图片描述这里写图片描述这里写图片描述

(1)假设P(w1)=P(w2)=0.5,P(w3)=0,仅利用x1特征值为这两类判别设计一个分类器,并确定样本的经验训练误差,即误分点的百分比。
(2)假设P(w1)=P(w2)=0.5,P(w3)=0,利用x1,x2两个特征值为这两类判别设计一个分类器,并确定样本的经验训练误差,即误分点的百分比。
(3)假设P(w1)=P(w2)=0.5,P(w3)=0,利用x1,x2和x3三个特征值为这两类判别设计一个分类器,并确定样本的经验训练误差,即误分点的百分比。

实验步骤:

由于这两类数据符合正态分布,可以求出每一类数据的均值mu和协方差sigma,然后我们利用课本第二章式(49)的判别函数来对每一个样本数据进行判别分类。原本在w1类的数据点被分进w2或原本在w2的数据点被分进w1的那部分即为误分的数据点,误分点的百分比即为误分的数据点个数占全部数据的百分比。
由于我们在进行判别的时候会频繁用到式(49)的判别函数,因此我们将其写成一个函数,需要的时候调用即可。Matlab程序如下:

function r=discriminant_function(x,u,sigma,P)
% Inputs:
%   x      - Input vector:d*1
%   u      - Mean of distribution:d*1
%   sigma - Covariance matrix of distribution:d*d
%   P      - Prior probability
% Ouputs:
%   r      - Discriminant result
r= -0.5*((x - u)'/sigma)*(x - u) - size(u, 1)/2.0*log(2*pi) - 0.5*log(det(sigma)) + log(P);
end

需要注意的是,输入向量x是d维列向量,均值u是d维列向量,sigma是d*d的方阵。
现在

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值