2019独角兽企业重金招聘Python工程师标准>>>

  • 基本原理

贝叶斯定理: 全概率公式:p(x) = p(x/y1)p(y1)+p(x/y2)p(y2)+...p(x/yk)p(yk),其中(y1,y2,...yk)组成一个完备事件且之间相互独立。

  • 前提条件

各个特征之间相互独立,其中各个特征又分别为离散的类别。

  • 直接上步骤:
  1. 计算训练X各个特征xi中某个类别xij在每一类yk下的条件概率:p(xij/yk),所有计算结果存为三维矩阵Pxy(j,i,k)
  2. 计算各类yk的先验概率 :p(yk),即该类在总体样品中所占的比例
  3. 再根据步骤1和2的计算结果,计算新x的全概率:p(x) = p(x/y1)*p(y1)+p(x/y2)*p(y2)+...p(x/yk)*p(yk),其中,p(x/yk) = Pxy(~,1,k)Pxy(~,2,k)...*Pxy(~,m,k),是yk下样品出现的概率,~代表该特征下的该类特征,m为特征维度。
  4. 依据贝叶斯公式计算出P(yk/x),排序选择最大的类别。
  • matlab测试代码:
%朴素贝叶斯 --- 分类算法
%假设x特征之间相互独立%输入: x[n*m]=[特征1,特征2,...特征m],其中特征1、2...m的值又分别为ij类(即离散数值)
%       y[n*1]=[类1;类2;...类k]
%如:x=[1,'高'      y=[‘是’
%       0,'低'         ‘否’
%       1,'中'         ‘是’
%       0,'高']        ‘否’]%输出:p(xi)
clc;clear;close all;x=[1,1,0,1,0,0,1,1,0,00,1,1,0,0,1,1,1,0,10,1,1,2,0,1,1,0,2,2];
y=[1,0,0,1,0,0,0,1,0,1];x=x';
y=y';[n,m]=size(x);%确定x特征维数m,
for i=1:m C(i)=length(unique(x(:,i)));%确定x每个特征的类数Ci;
end
uny=unique(y);
C(m+1)=length(uny);%确定y的类数;%-----------------------------计算先验概率,条件概率------------------
for i=1:C(m+1)  %y的类别数num=find(y==uny(i));sumy(i)=sum(y==uny(i));py(i)=sumy(i)/n;%先验概率P(Y=yi)xi=x(num,:);%y==yi下的x矩阵;for j=1:m   %x特征变量个数unx{j}=unique(x(:,j));for k=1:C(j)  %x每个特征下的类别数pxy(k,j,i)=sum(xi(:,j)==unx{j}(k))/sumy(i);%条件概率矩阵,每一列为yi条件下xi特征的各类别的条件概率endend
end%--------------------------------求后验概率---------------------------
% unx uny pxy py  Cxx=[0;0;0];sum=0;
for i=1:C(m+1)mul=1;for j=1:mj_n=unx{j}==xx(j);mul=mul*pxy(j_n,j,i);endpxx(i)=mul;    sum=sum+py(i)*pxx(i);
end
p_b=sum;%分母,全概率for i=1:C(m+1)mul=1;for j=1:mj_n=find(unx{j}==xx(j));mul=mul*pxy(j_n,j,i);endpxx(i)=mul;p_a=py(i)*pxx(i);%分子,联合概率pyx(i)=p_a/p_b;
endy_pre=max(pyx);%预测的最大概率
y_num=uny(unique(find(pyx==y_pre)));%预测最大概率的所属类别disp('预测为:类别   概率')
disp([y_num,y_pre])
  • 附图

转载于:https://my.oschina.net/u/3851199/blog/1941666

朴素贝叶斯(Naive-Bayes)相关推荐

  1. 朴素贝叶斯(naive bayes)

    朴素贝叶斯(naive bayes) 标签: Python 机器学习 主要參考资料:<机器学习实战><统计学习方法> 1.朴素贝叶斯分类原理 朴素贝叶斯法是基于贝叶斯定理和特征 ...

  2. 机器学习一:朴素贝叶斯(Naive Bayes)

    朴素贝叶斯 Naive Bayes 1. Introduction 1.1 离散属性 1.2 连续属性 1.2.1 Gaussian Naive Bayes 1.2.2 Multinomial Nai ...

  3. 【手写算法实现】 之 朴素贝叶斯 Naive Bayes 篇

    [手写算法实现] 之 朴素贝叶斯 Naive Bayes 篇 朴素贝叶斯模型(naive bayes)属于分类模型,也是最为简单的概率图模型,对于之后理解HMM.CRF等模型,大有裨益.这里手写算法介 ...

  4. 机器学习:基于朴素贝叶斯(Naive Bayes)的分类预测

    目录 一.简介和环境准备 简介: 环境: 二.实战演练 2.1使用葡萄(Wine)数据集,进行贝叶斯分类 1.数据导入 2.模型训练 3.模型预测 2.2模拟离散数据集–贝叶斯分类 1.数据导入.分析 ...

  5. 机器学习笔记——朴素贝叶斯(Naive Bayes)

    1贝叶斯算法简介 贝叶斯分类算法是统计学的一种分类方法,它是一类利用概率统计知识进行分类的算法.在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算 ...

  6. 朴素贝叶斯(Naive Bayes),“Naive”在何处?

    加上条件独立假设的贝叶斯方法就是朴素贝叶斯方法(Naive Bayes). Naive的发音是"乃一污",意思是"朴素的"."幼稚的".&q ...

  7. 西瓜书+实战+吴恩达机器学习(八)监督学习之朴素贝叶斯 Naive Bayes

    文章目录 0. 前言 1. 朴素贝叶斯算法 2. 半朴素贝叶斯算法 2.1. ODE 2.2. SPODE 2.3. TAN 2.4. AODE 如果这篇文章对你有一点小小的帮助,请给个关注,点个赞喔 ...

  8. 机器学习算法: 朴素贝叶斯(Naive Bayes)

    朴素贝叶斯的介绍 朴素贝叶斯算法(Naive Bayes, NB) 是应用最为广泛的分类算法之一.它是基于贝叶斯定义和特征条件独立假设的分类器方法.由于朴素贝叶斯法基于贝叶斯公式计算得到,有着坚实的数 ...

  9. 机器学习(十)分类算法之朴素贝叶斯(Naive Bayes)算法

    贝叶斯定理 首先我们来了解一下贝叶斯定理: 贝叶斯定理是用来做什么的?简单说,概率预测:某个条件下,一件事发生的概率是多大? 了解一下公式 事件B发生的条件下,事件A发生的概率为: 这里写图片描述 同 ...

  10. spark mllib 朴素贝叶斯 naive bayes

    为什么80%的码农都做不了架构师?>>>    数据源说明 第一列每行的标签,其他列为特征 运行代码如下 package spark.logisticRegressionimport ...

最新文章

  1. c语言子程序return,c语言return返回到哪
  2. c语言代码,输入两个数,输出第一个数到第二个数之间所有的数
  3. @Autowired自动装配对象和new对象的区别
  4. Java知识整理——反射
  5. 今天你多态了吗? 【转】
  6. linux /etc/passwd文件各参数的意义
  7. wordpress插件翻译不生效_谷歌浏览器自带翻译功能如何设置?不喜欢用插件的快来看...
  8. linux 查看端口战役,漫画 :Apache Nginx80 端口争夺战
  9. keybd_event()使用方法
  10. linux ftdi 虚拟,linux – 由FTDI USB串行转换器创建的监控(嗅探)/ dev / ttyUSB0
  11. vc中控件字体的设置(转)
  12. 服务器防御DDoS的方法,一文解决DDoS攻击
  13. GitHub快速上手指南
  14. IntelliJ IDEA “Finds duplicated code”提示如何关闭
  15. dad my_英文绘本 || My Dad!《我爸爸》
  16. 程序员必备神器:一款开源的不良坐姿监测应用 「PoseMon 让爷康康」
  17. 7-5 先序序列+中序序列建立二叉树
  18. js实现手机拨号功能
  19. 在linux中查找运行程序句柄,Linux下查看句柄
  20. python GUI-Tkinter编程

热门文章

  1. dcp9030cdn定影_兄弟DCP-9030CDN打印驱动下载|兄弟Brother DCP-9030CDN一体打印机驱动官方下载 - 维维软件园...
  2. Kaggle电影数据集:movies_metadata.csv
  3. [译]直观理解信息论
  4. DNN与微软同声传译系统背后的故事
  5. Hadoop中的一些基本操作
  6. python 学习小结(1)
  7. 【POJ 2785】【折半枚举】4 Values whose Sum is 0【暑期 No.6】
  8. 题目1003:A+B 使用大数相加方法解法
  9. 多视角子空间学习系列之 CCA 典型相关分析
  10. Hugging Face Course-Diving in 抱抱脸 Tokenizers library (WordPiece tokenization Unigram tokenization)