更新、更全的《机器学习》的更新网站,更有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(x_i|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]):基于报告决定系数\(R^2\)评估模型。
  • set_prams(**params):创建模型参数。

二、GaussianNB

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

三、Bernoulli

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

02-28 scikit-learn库之线朴素贝叶斯的更多相关文章

  1. 朴素贝叶斯(Naive Bayesian)

    简介 Naive Bayesian算法 也叫朴素贝叶斯算法(或者称为傻瓜式贝叶斯分类) 朴素(傻瓜):特征条件独立假设 贝叶斯:基于贝叶斯定理 这个算法确实十分朴素(傻瓜),属于监督学习,它是一个常用 ...

  2. 朴素贝叶斯算法下的情感分析——C#编程实现

    这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Language Pr ...

  3. 朴素贝叶斯方法(Naive Bayes Method)

        朴素贝叶斯是一种很简单的分类方法,之所以称之为朴素,是因为它有着非常强的前提条件-其所有特征都是相互独立的,是一种典型的生成学习算法.所谓生成学习算法,是指由训练数据学习联合概率分布P(X,Y ...

  4. C#编程实现朴素贝叶斯算法下的情感分析

    C#编程实现 这篇文章做了什么 朴素贝叶斯算法是机器学习中非常重要的分类算法,用途十分广泛,如垃圾邮件处理等.而情感分析(Sentiment Analysis)是自然语言处理(Natural Lang ...

  5. 朴素贝叶斯算法 & 应用实例

    转载请注明出处:http://www.cnblogs.com/marc01in/p/4775440.html 引 和师弟师妹聊天时经常提及,若有志于从事数据挖掘.机器学习方面的工作,在大学阶段就要把基 ...

  6. R语言︱贝叶斯网络语言实现及与朴素贝叶斯区别(笔记)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 一.贝叶斯网络与朴素贝叶斯的区别 朴素贝叶斯的 ...

  7. NLP系列(4)_朴素贝叶斯实战与进阶

    作者: 寒小阳 && 龙心尘 时间:2016年2月. 出处:http://blog.csdn.net/han_xiaoyang/article/details/50629608 htt ...

  8. NLP系列(3)_用朴素贝叶斯进行文本分类(下)

    作者: 龙心尘 && 寒小阳 时间:2016年2月. 出处: http://blog.csdn.net/longxinchen_ml/article/details/50629110 ...

  9. 第十三次作业——回归模型与房价预测&第十一次作业——sklearn中朴素贝叶斯模型及其应用&第七次作业——numpy统计分布显示

    第十三次作业——回归模型与房价预测 1. 导入boston房价数据集 2. 一元线性回归模型,建立一个变量与房价之间的预测模型,并图形化显示. 3. 多元线性回归模型,建立13个变量与房价之间的预测模 ...

随机推荐

  1. JS-特效 ~ 03. 楼层跳跃、事件对象event的获取与使用、event的主要内容、screenX、pageX、clientX的区别、放大镜、模拟滚动条

    楼层跳跃 100%子盒子会继承父盒子的宽高.父盒子继承body宽高.Body继承html的宽高. 盒子属性:auto:适应盒子自身的宽度或者高度.(对自己负责) 盒子属性:100%:适应盒子父盒子的宽 ...

  2. 【Offer】[34] 【二叉树中和为某一值的路径】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径.从树的根节点开始往下一直到叶节点所经过的节点形成一条路径.  ...

  3. centos 6.5 搭建DHCP实验

    搭建DHCP服务 安装DHCP服务 挂载光盘:mount /dev/cdrom /qswz 从光盘的安装包中安装DHCP rpm -ivh dhcp-4.1.1-38.P1.el6.centos.i6 ...

  4. 通过脚本实现将服务器的Log实时传送到Telegram群组

    首先说下需求,IT老大提出的一个需求,实现将php-laravel的应用日志实时传送到telegram的监控群组中,不用登陆服务器就可以实时查看应用的日志. 具体思路是: 先要将日志切割,并实时更新这 ...

  5. Windows服务器远程桌面不能复制粘贴的解决方法

    今天使用windows 2008服务器,实然就不能从本地复制内容和粘贴内容了,从网上找了下原因,最终解决了.一般本地和服务器不能复制粘贴分两种情况: 情况一:复制粘贴功能原本可以用,突然失灵了. 解决 ...

  6. 剖析nsq消息队列(二) 去中心化代码源码解析

    在上一篇帖子剖析nsq消息队列(一) 简介及去中心化实现原理中,我介绍了nsq的两种使用方式,一种是直接连接,还有一种是通过nslookup来实现去中心化的方式使用,并大概说了一下实现原理,没有什么难 ...

  7. OpenGl读取导入3D模型并且添加鼠标移动旋转显示

    原文作者:aircraft 原文链接:https://www.cnblogs.com/DOMLX/p/11543828.html 最近实习要用到opengl库就是跟opencv 有点像的那个,然后下了 ...

  8. Day 6 文件属性与命令执行流程

    1. 第一列第一个字符 表示文件类型 rw-r--r--     权限(下周) 4 这个文件被链接次数 root 文件的拥有者(用户) root 文件的拥有组(用户组 ==>家族) 2018 文 ...

  9. Java8虚拟机(JVM)内存溢出实战

    前言 相信很多JAVA中高级的同学在面试的时候会经常碰到一个面试题 你是如何在工作中对JVM调优和排查定位问题的? 事实上,如果用户量不大的情况下,在你的代码还算正常的情况下,在工作中除非真正碰到与J ...

  10. [Leetcode] 第357题 计算各个位数不同的数字个数

    一.题目描述 给定一个非负整数 n,计算各位数字都不同的数字 x 的个数,其中 0 ≤ x < 10n . 示例: 输入: 2 输出: 91 解释: 答案应为除去 11,22,33,44,55, ...