朴素贝叶斯(Naive Bayes model)
朴素贝叶斯是一种基于贝叶斯定理和特征条件独立假设的分类算法。
简单而言,对于给定的训练数据,朴素贝叶斯先基于特征条件独立假设学习输入和输出的联合概率分布,然后基于此分布对于新的实例,利用贝叶斯定理计算出最大的后验概率。朴素贝叶斯不会直接学习输入输出的联合概率分布,而是通过学习类的先验概率 和类条件概率 来完成。
所谓朴素贝叶斯中朴素的含义,即特征条件独立假设,条件独立假设就是说用于分类的特征在类确定的条件下都是条件独立的。这一假设使得朴素贝叶斯的学习成为可能。朴素贝叶斯算法具体步骤如下。
首先计算类先验概率:
类先验概率可直接用极大似然估计进行计算。
然后计算类条件概率:
最后给定新的实例,计算其对应的最大后验概率,然后判断其所属的类别:
import numpy as np
import pandas as pdclass Naive_Bayes:def __init__(self):pass# 朴素贝叶斯训练过程def nb_fit(self, X, y):classes = y[y.columns[0]].unique()class_count = y[y.columns[0]].value_counts()# 类先验概率class_prior = class_count / len(y)# 计算类条件概率prior = dict()for col in X.columns:for j in classes:p_x_y = X[(y == j).values][col].value_counts()for i in p_x_y.index:prior[(col, i, j)] = p_x_y[i] / class_count[j]return classes, class_prior, prior# 预测新的实例def predict(self, X_test):res = []for c in classes:p_y = class_prior[c]p_x_y = 1for i in X_test.items():p_x_y *= prior[tuple(list(i) + [c])]res.append(p_y * p_x_y)return classes[np.argmax(res)]if __name__ == "__main__":x1 = [1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3]x2 = ['S', 'M', 'M', 'S', 'S', 'S', 'M', 'M', 'L', 'L', 'L', 'M', 'M', 'L', 'L']y = [-1, -1, 1, 1, -1, -1, -1, 1, 1, 1, 1, 1, 1, 1, -1]df = pd.DataFrame({'x1': x1, 'x2': x2, 'y': y})X = df[['x1', 'x2']]y = df[['y']]X_test = {'x1': 2, 'x2': 'S'}nb = Naive_Bayes()classes, class_prior, prior = nb.nb_fit(X, y)print('测试数据预测类别为:', nb.predict(X_test))
朴素贝叶斯(Naive Bayes model)相关推荐
- 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇
[手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...
- 朴素贝叶斯(naive bayes)
朴素贝叶斯(naive bayes) 标签: Python 机器学习 主要參考资料:<机器学习实战><统计学习方法> 1.朴素贝叶斯分类原理 朴素贝叶斯法是基于贝叶斯定理和特征 ...
- 机器学习一:朴素贝叶斯(Naive Bayes)
朴素贝叶斯 Naive Bayes 1. Introduction 1.1 离散属性 1.2 连续属性 1.2.1 Gaussian Naive Bayes 1.2.2 Multinomial Nai ...
- 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测
目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...
- 机器学习笔记——朴素贝叶斯(Naive Bayes)
1贝叶斯算法简介 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算 ...
- 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法
贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...
- spark mllib 朴素贝叶斯 naive bayes
为什么80%的码农都做不了架构师?>>> 数据源说明 第一列每行的标签,其他列为特征 运行代码如下 package spark.logisticRegressionimport ...
- 朴素贝叶斯(Naive Bayes),“Naive”在何处?
加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Naive Bayes). Naive的发音是"乃一污",意思是"朴素的"."幼稚的".&q ...
- 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes
文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...
- 机器学习算法: 朴素贝叶斯(Naive Bayes)
朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...
最新文章
- leetcood学习笔记-45-跳跃游戏二
- JavaScript检查null与undefined以及==和===之间的差异
- 查看tensorflow pb模型文件的节点信息
- Ansible简单介绍及安装部署详解
- SpringBoot拦截器与过滤器
- springboot+mybatis整合shiro——登录认证和权限控制
- muduo网络库学习(一)对io复用的封装Poller,面向对象与基于对象
- 测试驱动陷阱,第2部分
- Java学习笔记----线程
- TensorFlow中文社区
- 如何快速学Web前端开发?JavaScript函数好学吗?
- 地摊经济一千年:从《韩熙载夜宴图》到木屋烧烤“撸串”
- Andersen Global与斯德哥尔摩律所合作,扩大瑞典业务版图
- 提笔忘字低龄化 电脑难辞其咎
- Python守护进程daemon实现
- 爬取百思不得姐的段子
- 教师资格证 中学科目二 简答/辨析/材料 知识点与口诀
- Hadoop服务启动出现Permission denied (publickey,password)
- 超分辨率——综述文章
- springboot毕设项目宁夏葡萄酒销售系统g80g5(java+VUE+Mybatis+Maven+Mysql)
热门文章
- docker环境搭建(生信学习)
- 如何用人工智能预测股票(完整答案)
- mysql ssl 2026_解决连接到 Amazon RDS for MySQL 或 Aurora 实例时的 ERROR 2026 SSL 连接错误...
- jquery控件-实现自定义样式的弹出窗口和确认框
- 2022.2.18二手苹果手机价格表图片
- IT行业的几大发展趋势
- C++无名命名空间中定义的函数不使用造成“-Wunused-function”警告问题
- 多级文件系统(操作系统课设)
- 曾经山寨手机上的跨平台方案
- 来 CSDN 实习技术编辑,直面改变世界的技术与人物