机器学习sklearn(7)朴素贝叶斯分类

本文详细介绍了朴素贝叶斯分类的原理,包括条件独立公式、全概率公式和贝叶斯公式。讨论了其优点和缺点,并对比了GaussianNB(连续值)、MultinomialNB(多元离散值)和BernoulliNB(二元离散值)这三种算法的应用场景和参数。同时,展示了如何使用sklearn实现朴素贝叶斯分类器,并通过处理文本数据进行分类任务,最后分析了删除高频词汇对分类性能的影响。

原理:

在假定属性之间相互独立的条件下,对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,然后找出最大的条件概率对应的类别。

条件独立公式:如果X和Y相互独立,则有:P(X,Y)=P(X)P(Y)

条件概率公式:

P(Y|X)=P(X,Y)/P(X)

P(X|Y)=P(X,Y)/P(Y)

或者说:P(Y|X)=P(X|Y)P(Y)/P(X)

接着看全概率公式:

然后很容易得出贝叶斯公式:

我们只要计算出所有的K个条件概率,找出最大的条件概率对应的类别,这就是朴素贝叶斯的预测了。

优点:

  • 发源于古典数学理论,有稳定的分类效果
  • 对小规模的数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,可以一批批的去增量训练
  • 对缺失数据不太敏感,算法也比较简单,常用于文本分类

缺点:

  • 朴素贝叶斯模型假设属性之间相互独立,这个假设在实际应用中往往是很难成立的,在属性个数比较多或是属性之间相关性较大时,分类效果不好。
  • 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率
  • 对输入数据的表达形式很敏感。比如我们的数据有两个特征A和B,第一个特征是a,a,b,b,如果第二个特征我们用的是d,e,f,g这样的形式,那么其实还好,数据相关性不一定那么强.如果之前对数据的表达形式做了整理,比如d,e发现其实很接近,我们归成了一类de, f和g也归成了一类fg,那么第二个特征就是de,de,fg,fg,这样就和第一个特征强相关了,不独立了。也就是特征的表达形式是很敏感的,因为它会对独立性假设有影响。

三种算法:

GaussianNB:如果样本特征的分布大部分是连续值,使用GaussianNB会比较好

class sklearn.naive_bayes.GaussianNB(priors=None)
  • priors:先验概率大小,如果没有给定,模型则根据样本数据自己计算(利用极大似然法)。

对象

  • class_prior_:每个样本的概率
  • class_count:每个类别的样本数量
  • theta_:每个类别中每个特征的均值
  • sigma_:每个类别中每个特征的方差

MultinomialNB:如果样本特征的大部分是多元离散值,使用MultinomialNB比较合适

class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)

  • alpha:先验平滑因子,默认等于1,当等于1时表示拉普拉斯平滑。
  • fit_prior:是否去学习类的先验概率,默认是True
  • class_pr
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值