【机器学习之统计学习】 朴素贝叶斯法及sklearn库python实现

前言 : 朴素贝叶斯法是什么?可以干什么用?

朴素贝叶斯法是一种常用的分类方法,基于贝叶斯原理和特征条件独立的假设。直观的讲是:在判定输入的x属于y中的哪一类时,先基于训练数据学习出数据的概率分布,并通过学习到的概率分布,求得后验概率最大的x的分类,将其输出。在学习概率分布时,假设条件概率分布的条件独立性来简化计算,用贝叶斯定理进行了后验概率的计算。

1、 朴素贝叶斯法学习和分类策略

          设输入空间x为n维向量的集合,输出空间为类标记集合 Y={c1,c2,…,cK}。输入为特征向量x∊x,输出为类标记(class label)y∊Y 。P(X,Y)是X和Y的联合概率分布。

          朴素贝叶斯法第一步: 先通过训练数据集,利用条件独立的假设学习出联合概率分布P(X,Y)。具体计算:生成先验概率分布:P(Y=c_k) , k=1,2,…,K ;条件概率分布:P(X=x|Y=c_k),k=1,2,…,K; 可得到联合概率分布。但如果直接通过估计条件概率分布估计联合布,会产生指数级的参数数量,不可行。因为当x为n维,且每个维度x^n有s_n 个取值可能的时候,参数个数为 K(s_1*s_2*…*s_n),是指数级别的参数,估计不可行。故简化计算,假设条件概率分布条件独立,则概率分不可表示为

                   【机器学习之统计学习】 朴素贝叶斯法及sklearn库python实现

           第二步:通过学习到的分布,计算后验概率P(Y=c_k|X=x),将后验概率最大的类别做为x的类输出。后验概率的计算则基 于贝叶斯定理:

【机器学习之统计学习】 朴素贝叶斯法及sklearn库python实现

基于条件独立的假设条件,可得出

【机器学习之统计学习】 朴素贝叶斯法及sklearn库python实现

2、朴素贝叶斯法优缺点和适用场景

优点:1)简单、快捷、高效 

          2 ) 可以处理多分类问题

          3)对数据缺失不敏感,在数据缺少的情况下依然可以使用

 缺点:1)对于输入数据形式比较敏感

          2)由于假设条件独立,会牺牲一定的分类准确性

 应用场景:

  1. 文本分析:朴素贝叶斯因多分类和独立规则,在文本分类上比其他算法有更高的成功率。可用于垃圾邮件顾虑和情感分析(识别客户评论的积极或消极)等。
  2. 实时预测:因其便捷性,可以用实时预测;
  3. 推荐系统:朴素贝叶斯分类器和协作过滤一起构建推荐系统

3、案例实现

利用Sklearn 库(ML神器啊~),对鸢尾花数据进行分类,计算分类准确性。

 

import numpy as np

from sklearn.datasets import load_iris

from sklearn import naive_bayes

   

iris= load_iris()

trainX = iris.data

trainY = iris.target

clf = naive_bayes.GaussianNB()

clf.fit(trainX,trainY)

print (str(clf.score(trainX,trainY)))

print (str(clf.score(trainX,trainY)))