python中如何使用朴素贝叶斯算法

发布时间 - 2026-01-11 00:32:24    点击率:

这里再重复一下标题为什么是"使用"而不是"实现":

首先,专业人士提供的算法比我们自己写的算法无论是效率还是正确率上都要高。

其次,对于数学不好的人来说,为了实现算法而去研究一堆公式是很痛苦的事情。

再次,除非他人提供的算法满足不了自己的需求,否则没必要"重复造轮子"。

下面言归正传,不了解贝叶斯算法的可以去查一下相关资料,这里只是简单介绍一下:

1.贝叶斯公式:

P(A|B)=P(AB)/P(B)

2.贝叶斯推断:

P(A|B)=P(A)×P(B|A)/P(B)

用文字表述:

后验概率=先验概率×相似度/标准化常量

而贝叶斯算法要解决的问题就是如何求出相似度,即:P(B|A)的值

3. 在scikit-learn包中提供了三种常用的朴素贝叶斯算法,下面依次说明:

1)高斯朴素贝叶斯:假设属性/特征是服从正态分布的(如下图),主要应用于数值型特征。

 

使用scikit-learn包中自带的数据,代码及说明如下:

>>>from sklearn import datasets ##导入包中的数据
>>> iris=datasets.load_iris() ##加载数据
>>> iris.feature_names  ##显示特征名字
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
>>> iris.data   ##显示数据
 array([[ 5.1, 3.5, 1.4, 0.2],[ 4.9, 3. , 1.4, 0.2],[ 4.7, 3.2, 1.3, 0.2]............
>>> iris.data.size  ##数据大小 ---600个
>>> iris.target_names  ##显示分类的名字 
 array(['setosa', 'versicolor', 'virginica'], dtype='<U10')
>>> from sklearn.naive_bayes import GaussianNB ##导入高斯朴素贝叶斯算法
>>> clf = GaussianNB()    ##给算法赋一个变量,主要是为了方便使用
>>> clf.fit(iris.data, iris.target)  ##开始分类。对于量特别大的样本,可以使用函数partial_fit分类,避免一次加载过多数据到内存

>>> clf.predict(iris.data[0].reshape(1,-1)) ##验证分类。标红部分特别说明:因为predict的参数是数组,data[0]是列表,所以需要转换一下
array([0])
>>> data=np.array([6,4,6,2])   ##验证分类
>>> clf.predict(data.reshape(1,-1))
array([2])

这里涉及到一个问题:如何判断数据符合正态分布? R语言里面有相关函数判断,或者直接绘图也可以看出来,但是都是P(x,y)这种可以在坐标系里面直接

画出来的情况,而例子中的数据如何确定,目前还没有搞明白,这部分后续会补上。

2)多项式分布朴素贝叶斯:常用于文本分类,特征是单词,值是单词出现的次数。

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(5, size=(6, 100)) ##返回随机整数值:范围[0,5) 大小6*100 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)伯努力朴素贝叶斯:每个特征都是是布尔型,得出的结果是0或1,即出现没出现

##示例来在官方文档,详细说明见第一个例子
>>> import numpy as np
>>> X = np.random.randint(2, size=(6, 100))
>>> Y = np.array([1, 2, 3, 4, 4, 5])
>>> from sklearn.naive_bayes import BernoulliNB
>>> clf = BernoulliNB()
>>> clf.fit(X, Y)
BernoulliNB(alpha=1.0, binarize=0.0, class_prior=None, fit_prior=True) 
>>> print(clf.predict(X[2]))
[3]

补充说明:此文还不完善,示例一中也有部分说明需要写,最近事情较多,后续会逐渐完善。

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持!


# 朴素贝叶斯算法  # python  # 算法  # python实现朴素贝叶斯算法  # Python实现的朴素贝叶斯算法经典示例【测试可用】  # 朴素贝叶斯算法的python实现方法  # Python机器学习算法库scikit-learn学习之决策树实现方法详解  # Python机器学习之scikit-learn库中KNN算法的封装与使用方法  # python机器学习之KNN分类算法  # python 实现朴素贝叶斯算法的示例  # 都是  # 正态分布  # 第一个  # 包中  # 详细说明  # 求出  # 自己的  # 的人  # 高斯  # 加载  # 文档  # 还没有  # 也有  # 都要  # 还不  # 这部  # 而去  # 言归正传  # 布尔  # 三种 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  JavaScript如何操作视频_媒体API怎么控制播放  Python3.6正式版新特性预览  mc皮肤壁纸制作器,苹果平板怎么设置自己想要的壁纸我的世界?  Laravel怎么实现模型属性的自动加密  Laravel安装步骤详细教程_Laravel环境搭建指南  Laravel Blade模板引擎语法_Laravel Blade布局继承用法  国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?  为什么要用作用域操作符_php中访问类常量与静态属性的优势【解答】  微信h5制作网站有哪些,免费微信H5页面制作工具?  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  如何在Tomcat中配置并部署网站项目?  详解MySQL数据库的安装与密码配置  Swift中swift中的switch 语句  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  油猴 教程,油猴搜脚本为什么会网页无法显示?  javascript事件捕获机制【深入分析IE和DOM中的事件模型】  微信小程序 配置文件详细介绍  如何快速建站并高效导出源代码?  Zeus浏览器网页版官网入口 宙斯浏览器官网在线通道  JavaScript中的标签模板是什么_它如何扩展字符串功能  javascript中数组(Array)对象和字符串(String)对象的常用方法总结  Linux系统运维自动化项目教程_Ansible批量管理实战  Mybatis 中的insertOrUpdate操作  如何在宝塔面板中修改默认建站目录?  PHP怎么接收前端传的文件路径_处理文件路径参数接收方法【汇总】  网站制作怎么样才能赚钱,用自己的电脑做服务器架设网站有什么利弊,能赚钱吗?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  C++时间戳转换成日期时间的步骤和示例代码  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  如何用VPS主机快速搭建个人网站?  Laravel如何创建自定义Artisan命令?(代码示例)  Laravel项目怎么部署到Linux_Laravel Nginx配置详解  Midjourney怎么调整光影效果_Midjourney光影调整方法【指南】  如何在Windows 2008云服务器安全搭建网站?  在线制作视频网站免费,都有哪些好的动漫网站?  如何在服务器上配置二级域名建站?  在Oracle关闭情况下如何修改spfile的参数  清除minerd进程的简单方法  Laravel如何配置Horizon来管理队列?(安装和使用)  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  在线制作视频的网站有哪些,电脑如何制作视频短片?  Laravel如何实现用户密码重置功能?(完整流程代码)  网易LOFTER官网链接 老福特网页版登录地址  Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】  如何基于PHP生成高效IDC网络公司建站源码?  如何在宝塔面板中创建新站点?  Laravel如何配置中间件Middleware_Laravel自定义中间件拦截请求与权限校验【步骤】  Laravel如何构建RESTful API_Laravel标准化API接口开发指南