再免费多看一章--高斯贝叶斯
时间:2022-05-08
本文章向大家介绍再免费多看一章--高斯贝叶斯,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
高斯贝叶斯用来处理连续数据,假设数据里每个特征项相关联的数据是连续值并且服从高斯分布,参考这里。
概率公式:
在《白话大数据与机器学习》里使用了sklearn里的GaussionNB来处理连续数据: 训练模型 clf = GaussianNB().fit(x, y) 预测数据 clf.predict(x)
这里我们来实现一下高斯贝叶斯算法,看看该算法具体是如果实现的。
1 准备数据 首先我们需要一些训练数据 这里使用鸢尾花数据。 这里x是一个(150, 4)2维数组,总共150条数据,打印其中的5条数据看一下:
[[5.1, 3.5, 1.4, 0.2],
[4.9, 3.0, 1.4, 0.2],
[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0.2],
[5.0, 3.6, 1.4, 0.2],
... ...]
可以看到每条数据都有4个特征项分别是: 萼片的长度,萼片的宽度,花瓣的长度,花瓣的宽度
y是x里每条数据对应的分类:
[0, 0, 1, 1, 2, …]
可以看到x里对应的分类总共有3种[0,1,2]。
2 训练模型 其实是求出了属于每种分类里的数据在每个特征列上的平均值和方差。
计算每种分类里每个特征列的平均值和方差
{0: [[5.1, 3.5, 1.4, 0.2],
[4.9, 3.0, 1.4, 0.2],
... ...],
1: [[4.7, 3.2, 1.3, 0.2],
[4.6, 3.1, 1.5, 0,2],
... ...],
2: [[5.0, 3.6, 1.4, 0.2],
... ...]}
得到平均值结果集
{0: [5.006, 3.418, 1.464, 0.244],
1: [5.936, 2.770, 4.260, 1.326],
2: [6.588, 2.974, 5.552, 2.026]}
得到方差结果集
{0: [0.1210, 0.1420, 0.029, 0.011],
1: [0.2611, 0.9650, 0.216, 0.038],
2: [0.3960, 0.1019, 0.298, 0.073]}
3 预测数据 其实是求出待预测数据属于哪种分类的概率更大。
待预测的数据
[3.1, 4.4, 2.1, 3.1]
计算待预测的数据里面, 每条数据属于某一类的概率是多少, 调用文章开始给出的概率公式计算, μ就是上一步得到的每个特征列均值,σ 2就是上一步得到的每个特征列方差,xi就是待预测数据里的每个特性项值, 这里分别计算出每个特征项的概率,然后把得到的每个特征项的概率相乘就得到了每条数据属于某一类的概率
[[8.512, 0.001, 0.006]]
可以看到待预测数据属于分类0,1,2的概率被计算出来了。
完整代码可以访问github进行下载 https://github.com/azheng333/Ml_Algorithm.git。
(完)
- 【深度学习系列】CNN模型的可视化
- mongodb11天之屠龙宝刀(六)mapreduce:mongodb中mapreduce原理与操作案例
- 真实场景的虚拟视点合成(View Synthsis)详解
- mongodb11天之屠龙宝刀(七)functions: mongodb 执行 functions入门案例
- 真实场景的双目立体匹配(Stereo Matching)获取深度图详解
- mongodb11天之屠龙宝刀(八)聚合函数与管道:sql与mongodb聚合函数对比
- Java基础-day04-基础题
- OpenCV亚像素角点cornerSubPixel()源代码分析
- mongodb11天之屠龙宝刀(十) 备份 还原 导出 导入::CSV,JSON,BOSN,解决中文乱码
- 【Go 语言社区】 golang 算法课程 第一季 第2节 洗牌算法
- 一条update语句的优化探索(r9笔记第80天)
- OpenCV角点检测源代码分析(Harris和ShiTomasi角点)
- Java基础-day03-代码题
- mongodb11天之屠龙宝刀(九)js函数入门:MongoDB基于js的数据类型修改
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 解决android studio引用远程仓库下载慢(JCenter下载慢)
- 在Android中查看当前Activity是否销毁的操作
- Android 7.0 运行时权限弹窗问题的解决
- Android加密之全盘加密详解
- Android 实现彻底退出自己APP 并杀掉所有相关的进程
- 使用Android开发接入第三方原生SDK实现微信登录
- Android打包篇:Android Studio将代码打包成jar包教程
- Android系统制作自定义签名的例子
- 抖音短视频系统开发,日期加减
- Android开发之InetAddress基础入门简介与源码实例
- Android实现通讯录功能
- 教你用CentOS7下使用mktorrent制作PT种子
- 让 Python 的高阶函数支持链式调用[实用库/轮子]
- 解决了一个 Python Type Hints 的问题,分享一下
- Elasticsearch:flattened 数据类型 (7.3 发行版新功能)