返回介绍

数学基础

统计学习

深度学习

工具

Scala

三、贝叶斯模型

发布于 2023-07-17 23:38:23 字数 5163 浏览 0 评论 0 收藏 0

  1. scikit中有多种不同的朴素贝叶斯分类器。他们的区别就在于它们假设了不同的 $ MathJax-Element-81 $ 分布 。

3.1 GaussianNB

  1. 高斯贝叶斯分类器GaussianNB :它假设特征 $ MathJax-Element-66 $ 的条件概率分布满足高斯分布:

    $ p(x_j\mid y=c_k)=\frac {1}{\sqrt{2\pi\sigma_{k,j}^{2}}}\exp\left(-\frac{(x_j-\mu_{k,j})^{2}}{2\sigma_{k,j}^{2}}\right) $

    其中: $ MathJax-Element-67 $ 为第 $ MathJax-Element-75 $ 个特征的条件概率分布的均值, $ MathJax-Element-69 $ 为第 $ MathJax-Element-75 $ 个特征的条件概率分布的方差。

  2. GaussianNB 的原型为:

    
    
    xxxxxxxxxx
    class sklearn.naive_bayes.GaussianNB()
  3. 模型属性:

    • class_prior_:一个数组,形状为(n_classes,),是每个类别的概率 。
    • class_count_:一个数组,形状为(n_classes,),是每个类别包含的训练样本数量。
    • theta_:一个数组,形状为(n_classes,n_features),是每个类别上,每个特征的均值。
    • sigma_:一个数组,形状为(n_classes,n_features),是每个类别上,每个特征的标准差。
  4. 模型方法:

    • fit(X, y[, sample_weight]):训练模型。

    • partial_fit(X, y[, classes, sample_weight]):分批训练模型。

      该方法主要用于大规模数据集的训练。此时可以将大数据集划分成若干个小数据集,然后在这些小数据集上连续调用partial_fit方法来训练模型。

    • predict(X):用模型进行预测,返回预测值。

    • predict_log_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率的对数值。

    • predict_proba(X):返回一个数组,数组的元素依次是X预测为各个类别的概率值 。

    • score(X, y[, sample_weight]):返回模型的预测性能得分。

3.2 MultinomialNB

  1. 多项式贝叶斯分类器MultinomialNB :它假设特征的条件概率分布满足多项式分布:

    $ p(x_j = a_{j,t}\mid y=c_k)=\frac{N_{k,j,t}+\alpha}{N_k+\alpha n} $

    其中:

    • $ MathJax-Element-71 $ ,表示属于类别 $ MathJax-Element-74 $ 的样本的数量。
    • $ MathJax-Element-73 $ ,表示属于类别 $ MathJax-Element-74 $ 且第 $ MathJax-Element-75 $ 个特征取值为 $ MathJax-Element-76 $ 的样本的数量。
  2. MultinomialNB 的原型为:

    
    
    xxxxxxxxxx
    class sklearn.naive_bayes.MultinomialNB(alpha=1.0, fit_prior=True, class_prior=None)
    • alpha:一个浮点数,指定 $ MathJax-Element-84 $ 值。

    • fit_prior:一个布尔值。

      • 如果为True,则不去学习 $ MathJax-Element-80 $ ,替代以均匀分布。
      • 如果为False ,则去学习 $ MathJax-Element-80 $ 。
    • class_prior:一个数组。它指定了每个分类的先验概率 $ MathJax-Element-80 $ 。

      如果指定了该参数,则每个分类的先验概率不再从数据集中学得

  3. 模型属性:

    • class_log_prior_:一个数组对象,形状为(n_classes,)。给出了每个类别的调整后的的经验概率分布的对数值。
    • feature_log_prob_: 一个数组对象,形状为(n_classes, n_features)。给出了 $ MathJax-Element-81 $ 的经验概率分布的对数值。
    • class_count_:一个数组,形状为(n_classes,),是每个类别包含的训练样本数量。
    • feature_count_:一个数组,形状为(n_classes, n_features)。训练过程中,每个类别每个特征遇到的样本数。
  4. 模型方法:参考 GaussianNB

  5. 下面的示例给出了不同的 $ MathJax-Element-84 $ 值对模型预测能力的影响。 运行结果如下。

    为了便于观察将x轴设置为对数坐标。可以看到随着 $ MathJax-Element-83 $ 之后,随着 $ MathJax-Element-84 $ 的增长,预测准确率在下降。

    这是因为,当 $ MathJax-Element-85 $ 时, $ MathJax-Element-86 $ 。即对任何类型的特征、该类型特征的任意取值,出现的概率都是 $ MathJax-Element-87 $ 。它完全忽略了各个特征之间的差别,也忽略了每个特征内部的分布。

    LinearSVR_C

3.3 BernoulliNB

  1. 伯努利贝叶斯分类器BernoulliNB:它假设特征的条件概率分布满足二项分布:

    $ p( x_j\mid y)=p\times x_j +(1-p)(1-x_j) $

    其中 $ MathJax-Element-88 $ ,且要求特征的取值为 $ MathJax-Element-89 $ 。

  2. BernoulliNB的原型为:

    
    
    xxxxxxxxxx
    class sklearn.naive_bayes.BernoulliNB(alpha=1.0, binarize=0.0, fit_prior=True, class_prior=None)
    • binarize:一个浮点数或者None

      • 如果为None,那么会假定原始数据已经是二元化的。

      • 如果是浮点数,则执行二元化策略:以该数值为界:

        • 特征取值大于它的作为 1 。
        • 特征取值小于它的作为 0 。
    • 其它参数参考MultinomialNB

  3. 模型属性:参考MultinomialNB

  4. 模型方法:参考MultinomialNB

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文