机器学习之朴素贝叶斯

2023-11-19


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


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 BernoulliNB

def 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 GaussianNB

def 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 pd


def 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 总结

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

机器学习之朴素贝叶斯 的相关文章

  • 使用 pythonbrew 编译 Python 3.2 和 2.7 时出现问题

    我正在尝试使用构建多个版本的 python蟒蛇酿造 http pypi python org pypi pythonbrew 0 7 3 但我遇到了一些测试失败 这是在运行的虚拟机上 Ubuntu 8 04 32 位 当我使用时会发生这种情
  • 没有名为 crypto.cipher 的模块

    我现在正在尝试加密一段时间 我最近得到了这个基于 python 的密码器 名为PythonCrypter https github com jbertman PythonCrypter 我对 Python 相当陌生 当我尝试通过终端打开 C
  • Python 中的 Lanczos 插值与 2D 图像

    我尝试重新缩放 2D 图像 灰度 图像大小为 256x256 所需输出为 224x224 像素值范围从 0 到 1300 我尝试了两种使用 Lanczos 插值来重新调整它们的方法 首先使用PIL图像 import numpy as np
  • 使用带有关键字参数的 map() 函数

    这是我尝试使用的循环map功能于 volume ids 1 2 3 4 5 ip 172 12 13 122 for volume id in volume ids my function volume id ip ip 我有办法做到这一点
  • Python - StatsModels、OLS 置信区间

    在 Statsmodels 中 我可以使用以下方法拟合我的模型 import statsmodels api as sm X np array 22000 13400 47600 7400 12000 32000 28000 31000 6
  • Flask 会话变量

    我正在用 Flask 编写一个小型网络应用程序 当两个用户 在同一网络下 尝试使用应用程序时 我遇到会话变量问题 这是代码 import os from flask import Flask request render template
  • 从字符串中删除识别的日期

    作为输入 我有几个包含不同格式日期的字符串 例如 彼得在16 45 我的生日是1990年7月8日 On 7 月 11 日星期六我会回家 I use dateutil parser parse识别字符串中的日期 在下一步中 我想从字符串中删除
  • Python pickle:腌制对象不等于源对象

    我认为这是预期的行为 但想检查一下 也许找出原因 因为我所做的研究结果是空白 我有一个函数可以提取数据 创建自定义类的新实例 然后将其附加到列表中 该类仅包含变量 然后 我使用协议 2 作为二进制文件将该列表腌制到文件中 稍后我重新运行脚本
  • Python 函数可以从作用域之外赋予新属性吗?

    我不知道你可以这样做 def tom print tom s locals locals def dick z print z name z name z guest Harry print z guest z guest print di
  • Python 的“zip”内置函数的 Ruby 等价物是什么?

    Ruby 是否有与 Python 内置函数等效的东西zip功能 如果不是 做同样事情的简洁方法是什么 一些背景信息 当我试图找到一种干净的方法来进行涉及两个数组的检查时 出现了这个问题 如果我有zip 我可以写这样的东西 zip a b a
  • 在f字符串中转义字符[重复]

    这个问题在这里已经有答案了 我遇到了以下问题f string gt gt gt a hello how to print hello gt gt gt f a a gt gt gt f a File
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • 如何在Python中对类别进行加权随机抽样

    给定一个元组列表 其中每个元组都包含一个概率和一个项目 我想根据其概率对项目进行采样 例如 给出列表 3 a 4 b 3 c 我想在 40 的时间内对 b 进行采样 在 python 中执行此操作的规范方法是什么 我查看了 random 模
  • 每个 X 具有多个 Y 值的 Python 散点图

    我正在尝试使用 Python 创建一个散点图 其中包含两个 X 类别 cat1 cat2 每个类别都有多个 Y 值 如果每个 X 值的 Y 值的数量相同 我可以使用以下代码使其工作 import numpy as np import mat
  • 为字典中的一个键附加多个值[重复]

    这个问题在这里已经有答案了 我是 python 新手 我有每年的年份和值列表 我想要做的是检查字典中是否已存在该年份 如果存在 则将该值附加到特定键的值列表中 例如 我有一个年份列表 并且每年都有一个值 2010 2 2009 4 1989
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用其构造函数初始化 OrderedDict 以便保留初始数据的顺序的正确方法?

    初始化有序字典 OD 以使其保留初始数据的顺序的正确方法是什么 from collections import OrderedDict Obviously wrong because regular dict loses order d O
  • Scrapy:如何使用元在方法之间传递项目

    我是 scrapy 和 python 的新手 我试图将 parse quotes 中的项目 item author 传递给下一个解析方法 parse bio 我尝试了 request meta 和 response meta 方法 如 sc
  • 在 Qt 中自动调整标签文本大小 - 奇怪的行为

    在 Qt 中 我有一个复合小部件 它由排列在 QBoxLayouts 内的多个 QLabels 组成 当小部件调整大小时 我希望标签文本缩放以填充标签区域 并且我已经在 resizeEvent 中实现了文本大小的调整 这可行 但似乎发生了某
  • 导入错误:没有名为 site 的模块 - mac

    我已经有这个问题几个月了 每次我想获取一个新的 python 包并使用它时 我都会在终端中收到此错误 ImportError No module named site 我不知道为什么会出现这个错误 实际上 我无法使用任何新软件包 因为每次我

随机推荐

  • 校园网服务器系统需求分析,校园网建设需求分析.doc

    校园网建设需求分析校园网建设需求分析 文档日期2012 5 9编号002项目名称北京市信息职业技术学院东校区校园网建设项目部门网建部开始时间2012 5 9结束时间2012 5 文档名称北京市信息职业技术学院东校区校园网建设项目需求分析文
  • 放弃Dubbo,选择最流行的Spring Cloud微服务架构实践与经验总结

    51CTO com原创稿件 Spring Cloud 在国内中小型公司能用起来吗 从 2016 年初一直到现在 我们在这条路上已经走了一年多 在使用 Spring Cloud 之前 我们对微服务实践是没有太多的体会和经验的 从最初的开源软件
  • uniapp git忽略unpackage文件

    最近在写整理一个app框架 遇到git提交时unpackage文件无法忽略的问题 1 第一反应是创建 gitignore文件 并写入unpackage目录 本以为大功告成 奈何还是不行 思考 可能是由于该文件已经被提交过 处于被跟踪状态 所
  • opencv安装教程python3.8_Python3.8 安装 OpenCV 库

    我是 Python 小新 本文演示如何在 Windows 10 下为 Python 安装 OpenCV 库 事实上 借助于强大的包管理工具 pip 只需要一条安装命令就可搞定 打开命令提示符 输入如下命令 pip install openc
  • Openframework在VS2010中的配置

    Openframework在VS2010中的配置 首先去官网下载Openframework 下载后最好解压到C盘根目录下 不然会出现各种问题 我也不知道怎么解决 随便打开其中的例程 然后右击该工程 选择属性 如下图 接着在C C 常规选项里
  • 基于MATLAB的WSN网络时间同步仿真

    目录 1 算法概述 2 仿真效果 3 matlab仿真源码 1 算法概述 WSN时间同步 时钟偏移与同步问题 主讲教师 马小林 1 时钟偏移与同步问题 1 时钟偏移与同步问题 时钟偏移 时钟之间的时间差 Clock Offset WSN系统
  • 【王道·计算机网络】第一章 计算机网络基本体系

    一 计算机网络概述 1 概念 计算机网络是一个将分散的 具有独立功能的计算机系统 通过通信设备与线路连接起来 由功能完善的软件实现资源共享和信息传递的系统 简而言之 计算机网络就是一些互联的 通过通信链路互联互通 自治的计算机系统的集合 2
  • pycharm:Updating Indices 解决办法

    pycharm Updating Indices 解决办法 右下角一直在update 然后我的文件夹里面文件很多 都是图片流 pycharm相当于预加载这些 然后在左侧可以查看 但是这个过程比较慢 解决的方法是让pycharm直接无视某些文
  • Window下用caffe实现MNIST训练

    本博包含MNIST原始数据的格式转化 以及分类训练 1 数据转化 Caffe源码中src caffe caffe examples mnist convert mnist data cpp提供的实现代码并不能直接在Windows下运行 这里
  • Filebeat监控 日志监控

    介绍 filebeat提供了两种监控 一种直接推送到ES集群 第二种就是Metricbeat 这里介绍第一种 也就四部 第1步 创建认证 账号密码 这一步基本可以略过了 如果你的filebeat在运行 你肯定已经有账号密码了 第2步 配置f
  • 设计模式学习笔记-工厂模式

    设计模式学习笔记 工厂模式 作用 实现了创建者和调用者的分离 详细分类 简单工厂模式 用来生产同一等级结构中的任意产品 对于增加新的产品 必须要扩展已有的代码 工厂方法模式 用来生产同一等级结构中的固定产品 支持增加任意产品 抽象工厂模式
  • 基于Zinx框架实现轻量级TCP服务器

    一 框架部分 包括一个sever 两个读 写模块 一个API管理 一个消息队列管理 一个读写池 建目录一个抽样层 一个实体层 二 基于zinx服务器的应用 对于一个框架 越简单来说越好 V0 1 简单的服务器客户端 1 对于开始 完成简单的
  • 使用CMake构建复杂工程

    转 https www cnblogs com autophyte p 6147751 html 0 什么是CMake CMake是一个跨平台的编译 安装 测试以及打包工具 CMake不直接编译软件 而是结合原生构建系统来构建软件 CMak
  • 计算机视觉之目标检测——R-CNN、Fast R-CNN和Faster R-CNN详解

    计算机视觉之目标检测 R CNN Fast R CNN和Faster R CNN详解 文章目录 计算机视觉之目标检测 R CNN Fast R CNN和Faster R CNN详解 目标检测的任务 目标检测的方法 R CNN Fast R
  • yagmail发送邮件

    分五步实现 1 导入yagmail第三方库 2 连接邮箱 3 添加邮件内容 4 发送邮件 5 释放邮箱 导入yagmail第三方库 import yagmail yagmail SMTP user 邮箱名 host SMTP服务器域名 ya
  • Vue 下拉框值变动事件传多个参数

    在使用 Vue 进行开发时 下拉框值变动事件 change 是很常用的 其传参一般分为两种方式 默认传参和自定义传参 默认传参 change 默认会传选中项标识的参数 在传参处不用定义 在方法中直接接受即可
  • Linux下的ssh

    SSH 为 Secure Shell 的缩写 由 IETF 的网络工作小组 Network Working Group 所制定 SSH 为建立在应用层和传输层基础上的安全协议 SSH 是目前较可靠 专为远程登录会话和其他网络服务提供安全性的
  • 将MindManager添加到鼠标右键新建项

    事情缘起于自己做事习惯为每个项目添加一个思维导图作为项目总看板 但每次都需要自己通过软件新建一个空白文件 再将空白文件索引到项目文件夹 再更名保存 虽然步骤不太多 但每次都需要这样的操作确实让我很困扰 所以就心想能不能让Mindmanage
  • ORM 的功能

    ORM要完成对象的初始化以及CRUD功能 在这些功能中尤其是query和update已经蕴含了相应的map的功能 除此之外还要提供transaction和concurrency的功能 这些基本的功能很好理解 不过相应的实现是比较复杂的 还要
  • 机器学习之朴素贝叶斯

    机器学习之朴素贝叶斯 1 朴素贝叶斯 2 朴素贝叶斯应用 3 代码实现贝努力朴素贝叶斯 4 代码实现高斯朴素贝叶斯 5 代码实现多项式朴素贝叶斯 6 总结 前言 主要介绍朴素贝叶斯的概念 公式 以及代码实现贝努利 高斯 多项式朴素贝叶斯 1