zoukankan      html  css  js  c++  java
  • 02-28 scikit-learn库之线朴素贝叶斯


    更新、更全的《机器学习》的更新网站,更有python、go、数据结构与算法、爬虫、人工智能教学等着你:https://www.cnblogs.com/nickchen121/p/11686958.html

    scikit-learn库之朴素贝叶斯

    在scikit-learn库中朴素贝叶斯由于数据分布的不同,主要分为以下三种BernoulliNBGaussianNBMultinomialNB,先验分布分别对应伯努利分布、高斯分布和多项式分布。

    接下来将会讨论这三者的区别,由于MUltinomiallNB用的比较多,因此会细讲该模型。由于是从官方文档翻译而来,翻译会略有偏颇,有兴趣的也可以去scikit-learn官方文档查看https://scikit-learn.org/stable/modules/classes.html#module-sklearn.naive_bayes

    一、MultinomialNB

    1.1 使用场景

    Bernoulli分布一般应用于样本特征是二元离散值,或者是很稀疏的多元离散值的场景。

    1.2 代码

    import numpy as np
    X = np.random.randint(5, size=(6, 100))
    y = np.array([1, 2, 3, 4, 5, 6])
    from sklearn.naive_bayes import MultinomialNB
    
    clf = MultinomialNB()
    clf.fit(X, y)
    
    MultinomialNB(alpha=1.0, class_prior=None, fit_prior=True)
    
    print(clf.predict(X[2:3]))
    
    [3]
    

    1.3 参数详解

    • alpha:超参数,float类型。建议使用默认值,如果真的需要调优时也尽量选择稍大于或稍小于1的数。默认为1。
    • fit_prior:先验概率选择,bool类型。fit_prior=True,所有样本类别输出的先验概率是不同的;fit_prior=False,所有样本类别输出的先验概率是相同的。默认为True。
    • class_prior:先验概率,array-like类型。只有fit_prior=True时才选择该参数,该参数可以自己填写各个类别的先验概率,也可以不填写让模型自动计算各个类别的先验概率。默认为None。

    1.4 属性

    • class_log_prior_:每个类别对应的对数概率。
    • intercept_:将多项式朴素贝叶斯模型作为线性模型时的class_log_prior_镜像的截距。
    • feature_log_prob_:给定样本某个特征的的概率,如p(xi|y)
    • coef_:将多项式朴素贝叶斯模型作为线性模型时的feature_log_prob_镜像的系数。
    • class_count_:每个类在拟合过程中遇到的样本数量,这个值由fit()中的sample_weigth加权得到。
    • feature_count_:每个特征在拟合过程中遇到的样本数量,这个值由fit()中的sample_weigth加权得到。

    1.5 方法

    • fit(X,y):把数据放入模型中训练模型。
    • get_params([deep]):返回模型的参数,可以用于Pipeline中。
    • partial_fit(X, y[, classes, sample_weight]):把数据集切割成多份进行增量训练,尤其适合大数据集,其中sample_weight可以控制训练集中样本的权重。
    • predict(X):预测样本X的分类类别。
    • predict_lot_proba(X):返回样本X在各个类别上对应的对数概率。
    • predict_proba(X):返回样本X在各个类别上对应的概率。
    • score(X,y[,sample_weight]):基于报告决定系数R2评估模型。
    • set_prams(**params):创建模型参数。

    二、GaussianNB

    GaussianNB模型类似于MultinomiaNB模型,两者区别之处在于,前者更适合解决特征值为连续值,而后者更适合解决特征值为多元离散值的情况。

    三、Bernoulli

    Bernoulli模型类似于MultinomiaNB模型,两者区别之处在于,前者更适合解决特征值为二元离散值或稀疏的多元离散值,而后者更适合解决特征值为多元离散值的情况,并且Bernoulli模型多了一个参数binarize,该参数不设置则默认特征已经被二值化处理,反之模型将自动二值化处理特征。

  • 相关阅读:
    编写可读性代码的艺术
    web前端常见的加密算法介绍
    git 遇到的问题
    Vue.js使用proxytable跨域的路径问题
    设置动画元素
    解决echarts图表在显示没有数据后再切换后渲染不出的问题
    svn回滚到之前的版本
    插件用法--视频播放video.js
    网页适配
    不跳转页面下载文件
  • 原文地址:https://www.cnblogs.com/abdm-989/p/12021285.html
Copyright © 2011-2022 走看看