sklearn之贝叶斯分类器使用

贝叶斯分类器

原理:基于先验概率P(Y),利用贝叶斯公式计算后验概率P(Y/X)(该对象属于某一类的概率),选择具有最大后验概率的类作为该对象所属类

特点:数据可离散可连续;对数据缺失、噪音不敏感;若属性相关性小,分类效果好,相关也不低于决策树

朴素贝叶斯算法

学习的内容是先验概率和条件概率(都使用极大似然估计这两种概率),公式很难敲,不敲了

scikit-learn中根据条件概率不同的分布有多种贝叶斯分类器

高斯贝叶斯分类器(GaussianNB)【假设条件分布满足高斯分布】

sklearn.naive_bayes.GaussianNB

  • 无参数,不需要调参

  • 方法

    • fit()
    • partial_fit():追加训练模型,适用于规模大的数据集,划分为若干个小数据集,在这些小数据集上连续使用partial_fit训练模型
    • predict()
    • score()
  • 属性

    • class_prior_:每个类别的概率
    • class_count_:每个类别包含样本数量

多项式贝叶斯分类器(MultinomialNB)【。。。多项式分布】

sklearn.naive_bayes.MutlnomialNB

  • 参数

    • alpha:浮点数,指定朴素贝叶斯估计公式中λ值
    • fit_prior=True:是否学习P(y=Ck),不学习则以均匀分布替代
    • class_prior=None:可以传入数组指定每个分类的先验概率,None代表从数据集中学习先验概率
    • class_count:数组,形状为(n_class,),每个类别包含训练样本数量
    • feature_count:数组,形状(n_class,n_features),每个类别每个特征遇到的样本数
  • 方法同上面高斯贝叶斯

伯努利贝叶斯分类器(BernoulliNB)【。。。二项分布】

  • 适用于离散特征
  • 特征取值只能是0和1(如文本分类中某个词出现,特征为1;无,特征为0)

sklearn.naive_bayes.BernoulliNB

  • 参数

    • alpha:浮点数,指定贝叶斯估计中的λ
    • binarize=0.0:浮点数或None,None表明原始数据已二元化;浮点数作为边界,特征取值大于该边界作为1,否则作为0(通过这个浮点数来实现二元化)
    • fit_prior=True:是否学习P(y=Ck),不学习则以均匀分布替代
    • class_prior=None:可以传入数组指定每个分类的先验概率,None代表从数据集中学习先验概率
    • class_count:数组,形状为(n_class,),每个类别包含训练样本数量
    • feature_count:数组,形状(n_class,n_features),每个类别每个特征遇到的样本数
  • 方法同上

  • alpha对预测的影响,越大(>100)准确率反而下降

  • binarize不能过小不能太大,一般取所有特征的所有值的(Min+Max)/2

posted @ 2018-10-14 17:04  不知道的痛  阅读(6831)  评论(0编辑  收藏  举报