《机器学习实战》学习笔记:基于朴素贝叶斯的分类方法_基于朴素贝叶斯网络的分类实验有哪些-程序员宅基地

技术标签: machine-learning  classify  python  机器学习  《机器学习实战》笔记  bayes  模式识别与机器学习  

概率是许多机器学习算法的基础,在前面生成决策树的过程中使用了一小部分关于概率的知识,即统计特征在数据集中取某个特定值的次数,然后除以数据集的实例总数,得到特征取该值的概率。

目录:

  • 一.基于贝叶斯理论的分类方法

  • 二.关于朴素贝叶斯的应用场景

  • 三.基于Python和朴素贝叶斯的文本分类

    1.准备数据

    2.训练算法

    3.测试算法

  • 四.小结

以下进入正文:

一.基于贝叶斯理论的分类方法

假设有两类数据组成的数据集如下:

这里写图片描述

其中,假设两个概率分布的参数已知,并用p1(x,y)表示当前数据点(x,y)属于类别一的概率;用p2(x,y)表示当前数据点(x,y)属于类别二的概率。

贝叶斯决策理论的核心思想是:选择高概率所对应的类别,选择具有最高概率的决策。有时也被总结成“多数占优”的原则。

具体到实例,对于一个数据点(x,y),可以用如下规则判定它的类别:

p1(x,y)>p2(x,y),那么点(x,y)被判定为类别一。
p1(x,y)<p2(x,y),那么点(x,y)被判定为类别二。

当然,在实际情况中,单单依靠以上的判定无法解决所有的问题,因为以上准则还不是贝叶斯决策理论的所有内容,使用p1(x,y)p2(x,y) 只是为了简化描述。更多的,我们使用p(ci|x,y) 来确定给定坐标的点(x,y),该数据点来自类别ci的概率是多少。具体地,应用贝叶斯准则可得到,该准则可以通过已知的三个概率值来计算未知的概率值:

这里写图片描述

则以上判定法则可转化为:

p(c1|x,y)>p(c2|x,y),那么点(x,y)被判定为类别一。
p(c1|x,y)<p(c2|x,y),那么点(x,y)被判定为类别二。

二.关于朴素贝叶斯的应用场景

机器学习的一个重要应用就是文档的自动分类,而朴素贝叶斯正是文档分类的常用算法。基本步骤是遍历并记录下文档中出现的词,并把每个词的出现或者不出现作为一个特征。这样便有跟文档中出现过词汇的个数一样多的特征。若有大量特征时,使用直方图效果更好。以下是朴素贝叶斯的一般过程:

  1. 收集数据:这里使用RSS源
  2. 准备数据:需要数值型&布尔型数据
  3. 分析数据:有大量特征时,绘制特征的作用不大,此时使用直方图效果更好
  4. 训练算法:计算不同的独立特征的条件概率
  5. 测试算法:计算错误率
  6. 使用算法:如文档分类

讲到这里,你也许还会带着疑问,为什么贝叶斯前会加上“朴素”,其实,这是基于朴素贝叶斯的一个假设,即:特征之间相互(统计意义上)独立,如一个单词出现的可能性与其他单词相邻没有关系,当然这在实际情况中不一定是正确的,但无数实验表明,这种假设是有必要的,而且朴素贝叶斯的实际效果其实很好。

朴素贝叶斯的另外一个假设是:每个特征同等重要。当然,这个假设也有问题(不然就不叫假设了……),但确实有用的假设。

三.基于Python和朴素贝叶斯的文本分类

从文本中提取特征,首先需要将文本进行拆分,转化为词向量,某个词存在表示为1,不存在表示为0,这样,原来一大串字符串便转为简单的0,1序列的向量。这种情况下只考虑某个词是否出现,当然,你也可以使用记录词的出现次数作为向量,或者记录不同词出现的频率等等。

1.准备数据:从文本中构建词向量,这里考虑出现在所有文档中的所有单词,并将每一篇文档转化为词汇表上的向量。下面的代码实现了功能,其中:

函数loadDataSet() 创建了一些实验样本postingList和对应的标签listClass,有一些样本被标签为带有侮辱性文字;
函数

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liyuefeilong/article/details/48383175

智能推荐

CanOpen 节点和心跳保护+NMT 简答解析(笔记)_canopen 心跳报文与节点保护-程序员宅基地

文章浏览阅读6.9k次,点赞7次,收藏33次。解析;节点保护,从站自我保护,心跳保护,主站主动处理错误,两者选其一NMT 通过发送CS命令,切换从站的状态,比如 :从预操作 -> 运行_canopen 心跳报文与节点保护

FCN框架简单解析_基于fcn网络的生成网络-程序员宅基地

文章浏览阅读1.6k次。FCN是在VGG或者Alexnet网络上进行的预训练,然后将后两层全连接改为卷积层。 现在的语义分割步骤基本都是上采样、下采样、拼接、对像素点进行分类。 如下图所示:从pool1开始,每个pool之后图像都会变为上个池化后图像的1/2。pool1为原图的1/2,依此推算,pool5为原图像的1/32,conv6,conv7之后图像大小保持不变,进行stride=32的反卷积,得到FCN-32s..._基于fcn网络的生成网络

【动手学深度学习】(三)Softmax回归_softmax回归模型-程序员宅基地

文章浏览阅读94次。softmax回归。_softmax回归模型

SimpleITK 读入图像、阈值、滤波等简单应用-程序员宅基地

文章浏览阅读2.7k次。#include <SimpleITK.h>using namespace std;namespace sitk = itk::simple;int main(){ sitk::ImageFileReader reader; reader.SetFileName(std::string("NCCT1.nii.gz")); reader.ReadImageInf..._simpleitk

【Spring教程六】Spring框架DI相关内容大揭秘:全面深入理解DI(依赖注入)以及setter注入与构造器注入全面详解_如何使用setter注入替换构造方法注入-程序员宅基地

文章浏览阅读892次,点赞26次,收藏28次。欢迎大家回到《 Java教程之Spring30天快速入门》,本教程所有示例均基于Maven实现,如果您对Maven还很陌生,请移步本人的博文《 如何在windows11下安装Maven并配置以及 IDEA配置Maven环境》,本文的上一篇为《 Bean的生命周期》。_如何使用setter注入替换构造方法注入

计算机无法识别打印机usb,win10系统打印机usb无法识别的办法-程序员宅基地

文章浏览阅读9.4k次,点赞2次,收藏5次。有关win10系统打印机usb无法识别的操作方法想必大家有所耳闻。但是能够对win10系统打印机usb无法识别进行实际操作的人却不多。其实解决win10系统打印机usb无法识别的问题也不是难事,小编这里提示两点:1、确保电脑UsB接口被启用,同时也要确保UsB驱动被正确安装。开机根据屏幕提示按下相应按键进入CMos,进入“基本Bios设置”,查看主板集成UsB接口,将UsB接口设置为“启用”。进入..._电脑无法识别打印机usb设备怎么办

随便推点

vue3封装SVGA组件&&解决报错Unexpected character ‘�_npm安装包出现空格unexpected character-程序员宅基地

文章浏览阅读1.2k次。用vue3封装一个SVGA组件;解决报错:Uncaught Error: Module parse failed: Unexpected character '�';_npm安装包出现空格unexpected character

Burp Suite2023软件安装详解_burpsuite2023-程序员宅基地

文章浏览阅读8.8k次,点赞16次,收藏104次。代理服务器(Proxy):拦截并审查所有Web应用程序流量,包括HTTP和HTTPS请求和响应头。扫描工具(Scanner):自动扫描工具,可以扫描Web应用程序以发现包括SQL注入、XSS等漏洞。考古工具(Target):Burp Suite包括一个考古工具,使安全专家能够轻松地分析请求和响应中的数据并提取Web应用程序背后的实际模式。攻击发生器(Intruder):Burp Suite的攻击发生器可以生成探测式的攻击,可用于识别Web应用程序中存在的关键漏洞。_burpsuite2023

用HTML+CSS做一个漂亮简单的个人网页(HTML期末大作业)_html+css网页制作作业-程序员宅基地

文章浏览阅读229次。网站布局方面:计划采用目前主流的、能兼容各大主流浏览器、显示效果稳定的浮动网页布局结构。网站程序方面:计划采用最新的网页编程语言HTML5+CSS3+JS程序语言完成网站的功能设计。并确保网站代码兼容目前市面上所有的主流浏览器,已达到打开后就能即时看到网站的效果。网站素材方面:计划收集各大平台好看的图片素材,并精挑细选适合网页风格的图片,然后使用PS做出适合网页尺寸的图片。网站文件方面:网站系统文件种类包含:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;_html+css网页制作作业

详解MySQL数据库insert和update语句_mysql语句update-程序员宅基地

文章浏览阅读1.1w次,点赞2次,收藏18次。用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新语句,也叫做数据操作语句。SQL语句中的更新语句update是最常用的语句之一,言外之意,就是对数据进行修改。在标准的SQL中有3个语句,它们是INSERT、UPDATE以及DELETE。用于操作数据库的SQL一般分为两种,一种是查询语句,也就是我们所说的SELECT语句,另外一种就是更新_mysql语句update

vue3基础入门系列ㅡㅡ①利用vite创建项目_windows nginx vite vue3 '@': path.resolve(__dirnam-程序员宅基地

文章浏览阅读116次。前言:本系列针对已熟悉 vue2 的开发者,另外此系列为本人学习笔记产出,可能存在理解错误,后期可能会做出修改._windows nginx vite vue3 '@': path.resolve(__dirname, './src'),

python day 01_一个程序的运行和计算机三大核心软件之间的关系-程序员宅基地

文章浏览阅读888次。目录1.什么是计算机?2.为什么要有计算机?3.计算机组成控制器:运算器:输入设备input输出设备output4.一个程序的运行与三大核心软件的关系5.操作系统6.计算机的三层结构1.什么是计算机?计算机俗称“电脑”,包含人对计算机的终极期望,能够真的像人脑一样工作2.为什么要有计算机?为了执行人类的程序,从而把人类解放出来大前提:计算机所有的组成都是模仿人的某一功能或器官3.计算机组成控制器:作用:是计算机的指挥系_一个程序的运行和计算机三大核心软件之间的关系

推荐文章

热门文章

相关标签