机器学习之朴素贝叶斯

  • 1 朴素贝叶斯
  • 2 朴素贝叶斯应用
  • 3 代码实现贝努力朴素贝叶斯
  • 4 代码实现高斯朴素贝叶斯
  • 5 代码实现多项式朴素贝叶斯
  • 6 总结

前言:主要介绍朴素贝叶斯的概念、公式,以及代码实现贝努利、高斯、多项式朴素贝叶斯。


1 朴素贝叶斯

  • 朴素贝叶斯(Naive Bayes)是一个非常简单,但是实用性很强的分类模型。朴素贝叶斯分类器的构造基础是贝叶斯理论。
  • 联合概率:是指两件事情同时发生的概率,一般对于X和Y来说,对应的联合概率记为P(XY)。
  • 条件概率:表示为在Y发生的条件下,发生X的概率。记为P(X∣Y)。
  • 贝叶斯公式:,其中W为特征向量,C为预测的类别。

2 朴素贝叶斯应用

id 刮北风 闷热 多云 预报有雨 真下雨?
1 0 1 0 1 0
2 1 1 1 0 1
3 0 1 1 0 1
4 0 0 0 1 0
5 0 1 1 0 1
6 0 1 0 1 0
7 1 0 0 1 0

注意:0代表否,1代表是。
我们可以使用上述公式依次计算出真下雨的概率,这里不再计算。我们可以通过代码使用贝努利、高斯、多项式来完成计算。

3 代码实现贝努力朴素贝叶斯

为了方便继续使用上述数据进行预测,数据截图如下:

代码实现:

from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.naive_bayes import BernoulliNBdef naviebayes():# 读取数据data = pd.read_csv("train_2.csv")# 取出数据当中的特征值和目标值y = data['真下雨?'] #目标值x = data[['刮北风', '闷热','多云','天气预报有雨']] #特征值# 进行数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)#贝努力朴素贝叶斯clf = BernoulliNB()clf.fit(x_train, y_train)y_predict = clf.predict(x_test)print(x_test)print(y_predict)print("预测的概率为",clf.score(x_test, y_test))print("--------------------")Next_Day = [[0, 0, 1, 0]]pre = clf.predict(Next_Day)pre2 = clf.predict_proba(Next_Day)print("预测结果为:", pre)# 输出模型预测的分类概率print("预测的概率为:", pre2)if __name__ == '__main__':naviebayes()

截图:

4 代码实现高斯朴素贝叶斯

代码实现:

from sklearn.model_selection import train_test_split
import pandas as pd
from sklearn.naive_bayes import GaussianNBdef naviebayes():# 读取数据data = pd.read_csv("train_2.csv")# 取出数据当中的特征值和目标值y = data['真下雨?'] #目标值x = data[['刮北风', '闷热','多云','天气预报有雨']] #特征值# 进行数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)#高斯朴素贝叶斯gnb = GaussianNB()gnb.fit(x_train, y_train)y_predict = gnb.predict(x_test)print(x_test)print(y_predict)print("预测的概率为",gnb.score(x_test, y_test))print("--------------------")Next_Day = [[0, 0, 1, 0]]pre = gnb.predict(Next_Day)pre2 = gnb.predict_proba(Next_Day)print("预测结果为:", pre)# 输出模型预测的分类概率print("预测的概率为:", pre2)if __name__ == '__main__':naviebayes()

截图:

5 代码实现多项式朴素贝叶斯

代码如下:

from sklearn.model_selection import train_test_split
from sklearn.naive_bayes import MultinomialNB
import pandas as pddef naviebayes():# 读取数据data = pd.read_csv("train_2.csv")# 取出数据当中的特征值和目标值y = data['真下雨?'] #目标值x = data[['刮北风', '闷热','多云','天气预报有雨']] #特征值# 进行数据分割x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)# 多项式朴素贝叶斯mlt = MultinomialNB(alpha=1.0)mlt.fit(x_train, y_train)y_predict = mlt.predict(x_test)print(x_test)print(y_predict)print("准确率为:", mlt.score(x_test, y_test))print("--------------------")Next_Day = [[0, 0, 1, 0]]pre = mlt.predict(Next_Day)pre2 = mlt.predict_proba(Next_Day)print("预测结果为:", pre)# 输出模型预测的分类概率print("预测的概率为:", pre2)if __name__ == '__main__':naviebayes()

截图:

6 总结

通过对比贝努力、高斯、多项式的结果,预测的准确率不一样,所以我们在开发使用的时候,一定要注意区分这几类。

机器学习之朴素贝叶斯 1相关推荐

  1. 【机器学习】朴素贝叶斯、SVM和数据分布检验分析

    [机器学习]朴素贝叶斯.SVM和数据分布检验分析 文章目录 1 朴素贝叶斯 2 SVM2.1 线性可分2.2 最大间隔超平面2.3 SVM 最优化问题 3 数据分布检验方法3.1 数据分布检验3.2 ...

  2. 机器学习:朴素贝叶斯

    机器学习:朴素贝叶斯 1 朴素贝叶斯应用场景 2 朴素贝叶斯相关公式 3 sklearn库中朴素贝叶斯运用 3.1 伯努利朴素贝叶斯 3.2 多项式朴素贝叶斯 3.3 高斯朴素贝叶斯 4 代码 4.1 ...

  3. 机器学习:朴素贝叶斯模型算法原理(含实战案例)

    机器学习:朴素贝叶斯模型算法原理 作者:i阿极 作者简介:Python领域新星作者.多项比赛获奖者:博主个人首页

  4. 【机器学习算法-朴素贝叶斯、支持向量机】

    机器学习算法-朴素贝叶斯算法 1.朴素贝叶斯算法 2.支持向量机 2.1SVM基本综述 1.朴素贝叶斯算法 朴素贝叶斯是生成模型,需要根据已有的数据求出先验概率. 1.联合概率 2.条件概率 3.相互 ...

  5. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  6. 机器学习实战 朴素贝叶斯分类器

    基于概率论的分类方法: 朴素贝叶斯 我的微信公众号: s406205391; 欢迎大家一起学习,一起进步!!! k-近邻算法和决策树会给出"该数据属于哪一类"的明确回答.不过,分类 ...

  7. 朴素贝叶斯 php,PHP实现机器学习之朴素贝叶斯算法详解.pdf

    PHP实实现现机机器器学学习习之之朴朴素素贝贝叶叶斯斯算算法法详详解解 本文实例讲述了PHP实现机器学习之朴素贝叶斯算法.分享给大家供大家参考 具体如下: 机器学习已经在我们的生活中变得随处可见了.比 ...

  8. 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_机器学习之朴素贝叶斯

    1.贝叶斯原理 朴素贝叶斯分类(Naive Bayesian,NB)源于贝叶斯理论,是一类基于概率的分类器,其基本思想:假设样本属性之间相互独立,对于给定的待分类项,求解在此项出现的情况下其他各个类别 ...

  9. 【机器学习】朴素贝叶斯代码练习

    本课程是中国大学慕课<机器学习>的"朴素贝叶斯"章节的课后代码. 课程地址: https://www.icourse163.org/course/WZU-1464096 ...

最新文章

  1. HarmonyOS 实现跑马灯效果
  2. 游戏开发基础:A*算法(转)
  3. 虚拟化部署之Hyper-V简介
  4. matlab reshape函数_numpy中的np.ascontiguousarray()函数
  5. WEB Struts2 中OGNL的用法
  6. 一维卷积详细解释(转载+自己笔记)
  7. Android之解决AppBarLayout 下面一道阴影
  8. Mac 终端提示:The default interactive shell is now zsh.
  9. (王道408考研操作系统)第四章文件管理-第一节5:文件存储空间管理
  10. mysql 去重计算公式_mysql多字段去重,并计数
  11. UVa 10806 Dijkstra,Dijkstra(最小费用最大流)
  12. 由浅入深,解决三道【只出现一次的数】!
  13. Go、Java、C++,下一代测序工具开发谁更强?
  14. BufferedReader类
  15. 【原】c#对xml的操作
  16. 如何批量保存网页照片
  17. 论文Time-Series Event Prediction with Evolutionary State Graph笔记
  18. 快速上手LaTex,书写美观学术论文
  19. 【JZ38 字符串的排列】
  20. Mysql日期时间格式化 %Y-%m-%d %H:%i:%S

热门文章

  1. 《Effective C++》读书笔记(一)
  2. 半双工 Wi-Fi 无线局域网讲解
  3. Scrapy通用爬虫
  4. 即将改变世界的力量:2021年最具影响力的科技预测
  5. oracle 列转行 带逗号_oracle wm_concat 列转行 逗号分隔
  6. 从项目管理角度谈OA流程优化
  7. linux安装mysqli
  8. 1.5极限存在准则和重要极限
  9. 尚硅谷Java入门视频教程导读及第一章
  10. java开发之SSM开发框架