MATLAB机器学习方法之朴素贝叶斯算法

2023-10-27

朴素贝叶斯分类算法的核心算法是:

 或

 而如果所有特征都相互独立的话,P(特征|类别k)可以看作:

P(特征1|类别k)*P(特征2|类别k)*P(特征3|类别k)*……*P(特征n|类别k)

那么分别计算P(特征|类别1)、P(特征|类别2)、P(特征|类别3)……P(特征|类别n),取他们之中的最大值即为待分类样本所归附的类别。

MATLAB代码实现:

%朴素贝叶斯算法

train=[1,1,4;1,4,2;3,4,1;2,2,3;1,3,1;2,3,4;3,3,1;2,3,2];%8组训练数据,三个

%属性,第一个分三级,后面两个均分四级。

trainclass=[2 1 1 2 1 2 2 2];%分组

test=[3,3,1];%测试数据组

c=0;

classnum=zeros(1,length(unique(trainclass)));%创建记录每个组分别出现次数的矩阵

a=unique(trainclass);%a记录组号,length(a)记录组数

p=zeros(length(classnum),length(test));%创建概率矩阵

for i=1:length(trainclass)

j=trainclass(i);

classnum(j)=classnum(j)+1;

end%记录每组出现的次数

for k=1:length(test)

for j=1:length(a)

for i=1:length(trainclass)

if(trainclass(i)==a(j))

if(train(i,k)==test(k))

c=c+1;

p(j,k)=c/classnum(j);

end

end

end

c=0;

end

end%计算所有的概率

p1=ones(1,length(a));%创建最终概率的矩阵

for i=1:length(a)

p1(i)=classnum(i)/length(trainclass);

end%先计算p(类别)

for i=1:length(classnum)

for j=1:length(test)

p1(i)=p1(i)*p(i,j);

end

end%由于两个式子的p(特征)一致,故分母不用参与计算

m=max(p1);

for i=1:length(classnum)

if(m==p1(i))

break;

end

end%找出最大概率对应的组别

fprintf('该测试数据属于类 %d\n',i);

%code end

       其合理性可以用一个实例说明:路上走过来一个黑人,旁边人问你他是哪里来的,你十有八九回答从非洲来的,这是因为黑人中非洲人的比例最高。

此算法的特点:

(1)简单、高效、健壮。

(2)相关属性可能会降低朴素贝叶斯分类器的性能,因为对这些属性,条件独立的假设已不成立。

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

MATLAB机器学习方法之朴素贝叶斯算法 的相关文章

随机推荐

  • 理解脸书为何从互联网消失了

    原文 https blog cloudflare com october 2021 facebook outage 译 时序 FaceBook不会宕机 不是吗 我们想了几分钟这个问题 今天2021 10 4 16 51 UTC 我们建了一条
  • mysql:使用已有的记录更新另一条数据

    create table test id integer primary key name varchar 100 例如现在在test表中有N条数据 其中有两条为 12 hello 13 world 如果想把上一条中的数据改成和下一条记录一
  • sql中having,group,select,where,order by,join的执行顺序

    在SQL中执行的顺序 1 先连接from后的数据源 若有join 则先执行on后条件 再连接数据源 2 执行where条件 3 执行group by 4 执行having 5 执行order by 6 输出结果 顺序 FROM ON JOI
  • C++ 指针

    每个变量都有一个内存位置 每一个内存位置都定义了可使用连字号 运算符访问的地址 它表示了在内存中的一个地址 例如输出定义变量的地址 include
  • 【分享之路001】springboot整合双redis配置

    springboot双redis配置 1 背景 springboot项目中本来用到了redis 由于业务要求 需要将数据也写到另一个redis中 2 配置文件改动 2 1 之前redis配置 spring redis database xx
  • 【计算机网络篇】TCP协议

    作者简介 大家好 我是小杨 个人主页 小杨 的csdn博客 希望大家多多支持 一起进步呀 TCP协议 1 TCP 简介 TCP Transmission Control Protocol 是一种在计算机网络中广泛使用的传输层协议 用于在网络
  • [机器学习与scikit-learn-29]:算法-回归-普通线性回归LinearRegression拟合线性分布数据的代码示例

    作者主页 文火冰糖的硅基工坊 文火冰糖 王文兵 的博客 文火冰糖的硅基工坊 CSDN博客 本文网址 目录 第1章 LinearRegression类说明 第2章 LinearRegression使用的代码示例 2 1 导入库 2 2 导数数
  • SSM框架的流程及优点

    SSM框架 SSM Spring SpringMVC MyBatis 框架集由Spring MyBatis两个开源框架整合而成 SpringMVC是Spring中的部分内容 在这个快速发展的互联经济的时代 SSM框架提高了开发人员的工作效率
  • 查询topn的另一种方法通过orderby排序后利用limit来实现

    文章目录 前言 1 热身题实践 其他 前言 一直有个想法 把面试需要的知识点全都总结一下 包括数据库 语言 算法 数据结构等知识 形成一个面试总结笔记 这样以后面试的时候只看这些文章回顾下就行了 今天就先总结下Mysql的面试热身题吧 后续
  • HBase运维中遇到的问题

    1 PleaseHoldException Master is initializing hadoop 3 2 1 hbase 2 2 5 各种配置之后 出现的错误具体为 进去 hbase shell 之后 出现 hbase main 00
  • C#协变

    namespace 协变 public class Animal public string name public Animal string name1 name name1 public class dog Animal public
  • 【vue】vue 中插槽的三种类型:

    文章目录 一 匿名插槽 二 具名插槽 三 作用域插槽 一 匿名插槽
  • CSS学习笔记——搭建京东购物车网页

    大家好 作为一名互联网行业的小白 写博客只是为了巩固自己学习的知识 但由于水平有限 博客中难免会有一些错误出现 有不妥之处恳请各位大佬指点一二 博客主页 链接 https blog csdn net weixin 52720197 spm
  • elasticsearch心得记录-搭建到使用过程中

    1 es评分机制 使用场景 匹配多个关键词的时候 增加其中某个关键词的权重 增加其评分 搜索出来即可排到前面 评分默认为倒叙排 2 es基础的增删改查 搜索 search type dfs query then fetch 每个分片会根据
  • 条码规范——Code 93

    CODE 93 BACKGROUND INFORMATION Code 93 was designed to complement and improve upon Code 39 Code 93 is similar in that it
  • 在线代码测试小项目

    小项目 代码在线测试 http是我们生活中最常使用的协议 现如今网络浏览器越来越贴近人们的生活 使得做什么事都很方便 但是想要运行一段代码还得需要在电脑指定的环境下来运行 这在有些情况下让人很抓狂 我在网上也看到过很多代码在线测试的网页 感
  • 模块打包器Webpack详解!

    Webpack 1 什么是Webpack Webpack 是一个前端资源加载 打包工具 它将根据模块的依赖关系进行静态分析 然后将这些模块按照指定的规则生成对应的静态资源 从图中我们可以看出 Webpack 可以将多种静态资源 js css
  • 关于c语言main函数中int argc,char **argv的理解

    关于c语言main函数中int argc char argv的理解 c语言main函数通常形如int main int argc char argv 那么argc和argv代表啥呢 其实 argc表示传入main函数的参数的个数 而argv
  • Spark【Spark SQL(四)UDF函数和UDAF函数】

    UDF 函数 UDF 是我们用户可以自定义的函数 我们通过SparkSession对象来调用 udf 的 register name String func A1 A2 A3 方法来注册一个我们自定义的函数 其中 name 是我们自定义的函
  • MATLAB机器学习方法之朴素贝叶斯算法

    朴素贝叶斯分类算法的核心算法是 或 而如果所有特征都相互独立的话 P 特征 类别k 可以看作 P 特征1 类别k P 特征2 类别k P 特征3 类别k P 特征n 类别k 那么分别计算P 特征 类别1 P 特征 类别2 P 特征 类别3