matlab实现朴素贝叶斯可视化,模式识别(七):MATLAB 实现朴素贝叶斯分类器

本文介绍了如何使用MATLAB实现朴素贝叶斯分类器,包括计算先验概率和似然函数,并提供了训练和预测的代码示例。通过UCI上的mushroom数据集进行测试,取得了99.94%的高准确率。
摘要由CSDN通过智能技术生成

本系列文章由云端暮雪编辑,转载请注明出处

多谢合作!

基础介绍

今天介绍一种简单高效的分类器——朴素贝叶斯分类器(Naive Bayes Classifier)。

相信学过概率论的同学对贝叶斯这个名字应该不会感到陌生,因为在概率论中有一条重要的公式,就是以贝叶斯命名的,这就是“贝叶斯公式”:

0818b9ca8b590ca3270a3433284dd417.png

贝叶斯分类器就是基于这条公式发展起来的,之所以这里还加上了朴素二字,是因为该分类器对各类的分布做了一个假设,即不同类的数据样本之间是相互独立的。这样的假设是非常强的,但并不影响朴素贝叶斯分类器的适用性。1997年,微软研究院的 Domingos 和 Pazzani 通过实验证明,即使在其前提假设不成立的情况下,该分类器依然表现出良好的性能。对这一现象的一个解释是,该分类器需要训练的参数比较少,所以能够很好的避免发生过拟合(overfitting)。

实现说明

下面我们一步步来实现贝叶斯分类器。

分类器的训练分两步:

计算先验概率;

计算似然函数;

应用过程只需利用训练过程中得到的先验概率和似然函数计算出后验概率即可。

所谓先验概率,其实就是每个类出现的概率,这个是个简单的统计问题,即把训练数据集中不同类所占的比值都计算出来即可。

训练似然函数与此类似,就是看各个特征对应的值属于某个类的概率值。

至于后验概率,一般不会真的去完整计算,而是只计算贝叶斯公式右边分子部分,因为分母部分知识归一因子,对特定的问题是一个常数值。

代码示例

对朴素贝叶斯分类器有了最基本的认识之后,下面我们开始尝试用 MATLAB 设计一个出来。

首先计算先验概率:

function priors = nbc_Priors(training)

%NBC_PRIORS calculates the priors for each class by using the training data

%set.

%%   priors = nbc_Priors(training)

%%  Input:

%   training - a struct representing the training data set

%       training.class    - the class of each data

%       training.features - the feature of each data

%%  Output:

%   priors - a struct representing the priors of each class

%       priors.class - the class labels

%       priors.value - the priors of its corresponding classes

%%  Running these code to get some examples:

%nbc_mushroom

%%  Edited by X. Sun

%   My homepage: http://pamixsun.github.io/

%%

% Check the input arguments

if nargin 

error(message('MATLAB:UNIQUE:NotEnoughInputs'));

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值