专栏首页生物信息云R语言数据分析与挖掘(第八章):判别分析(2)——贝叶斯(Bayes)判别分析

R语言数据分析与挖掘(第八章):判别分析(2)——贝叶斯(Bayes)判别分析

在上一篇文章中(R语言数据分析与挖掘(第八章):判别分析(1

贝叶斯(Bayes)判别分析

Bayes判别,它是基于Bayes准则的判别方法,判别指标为定量资料,它的判别规则和最大似然判别、Bayes公式判别相似,都是根据概率大小进行判别,要求各类近似服从多元正态分布。

1. Bayes准则:寻求一种判别规则,使得属于第k类的样品在第k类中取得最大的后验概率。

基于以上准则,假定已知个体分为g类,各类出现的先验概率为P(Yk),且各类均近似服从多元正态分布,当各类的协方差阵相等时,可获得由m个指标建立的g个线性判别函数Y1,Y2,…,Yg,分别表示属于各类的判别函数值:

其中Cjk即为判别系数,通过合并协方差阵代入即可计算得各个指标的判别系数,而C0k中则加以考虑了先验概率P(Yk):

2. 先验概率的确定:若未知各类的先验概率时,一般可用:

(1)等概率(先验无知):P(Yk)= 1/g(all groups equal)。

(2)频率:P(Yk)= nk/N (当样本较大且无选择偏倚时用,compute from sample size)

3. 判别规则:

(1)计算样品属于各类的判别函数值,把对象判别为Y值最大的类。

(2)根据所得Y值,我们亦可以进一步计算属于k类的后验概率,再将对象判给后验概率最大的一类。

以上两种判别规则的结果是完全一致的。

函数介绍

实现Bayes判别可以调用程序包klaR中NaiveBayes()函数,其调用格式为:

NaiveBayes(x,grouping,prior,usekernel =FALSE,fL = 0, ...)

x为训练样本的矩阵或数据框,grouping表示训练样本的分类情况,prior可为各个类别指定先验概率,默认情况下用各个类别的样本比例作为先验概率,usekernel指定密度估计的方法,默认情况下使用标准的密度估计,设为TRUE时,则使用核密度估计方法;fL指定是否进行拉普拉斯修正,默认情况下不对数据进行修正,当数据量较小时,可以设置该参数为1,即进行拉普拉斯修正。

例子:利用Iris数据集进行Bayes判别

> install.packages("klaR")
> X<-iris[1:100,1:4]
> G<-as.factor(gl(2,50))
> library(klaR)
> x<-NaiveBayes(X,G)
> predict(x)
$class
  1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18 
  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
 19  20  21  22  23  24  25  26  27  28  29  30  31  32  33  34  35  36 
  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1 
 37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54 
  1   1   1   1   1   1   1   1   1   1   1   1   1   1   2   2   2   2 
 55  56  57  58  59  60  61  62  63  64  65  66  67  68  69  70  71  72 
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2 
 73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90 
  2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2   2 
 91  92  93  94  95  96  97  98  99 100 
  2   2   2   2   2   2   2   2   2   2

由分析结果可知,根据已知分类的训练样品建立的判别规则,出现了0个样本错判,回代的判别正确率为100%。

本文分享自微信公众号 - MedBioInfoCloud(MedBioInfoCloud)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • R语言数据分析与挖掘(第八章):判别分析(3)——费歇尔(Fisher)判别分析

    我们之前介绍了判别分析中,因为判别准则的不同,可分为多种判别分析法。常用的有费歇尔(Fisher)判别分析、贝叶斯(Bayes)判别分析和距离判别分析。在上2篇...

    DoubleHelix
  • R语言基础教程——第1章:初识R

    R是统计领域广泛使用的诞生于1980年左右的S语言的一个分支。可以认为R是S语言的一种实现。而S语言是由AT&T贝尔实验室开发的一种用来进行数据探索、统计分析和...

    DoubleHelix
  • R语言基础绘图教程——第8章:3维散点图

    有时候不知道角度,可以一次绘制多个,选择你觉得合适的图,下面代码会产生一个pdf文件。可以从里面选择最优的一个。

    DoubleHelix
  • 节后如何快速进入工作状态

    回家过年时觉得时间过的特别快,不回家过年时觉得时间过得更快,今年虽然没回家,但也在心理上偷了个懒儿,美滋滋地过了几天节,看小品看电影,一会哭的稀里哗啦一会哈哈大...

    杨熹
  • 推荐系统之FM与MF傻傻分不清楚

    之前分享过一篇关于围绕LR周边模型展开的文章,主要前向回顾了它与Linear Regression的关系,后向介绍了它与Softmax Regression以及...

    张小磊
  • 成功最大的捷径是读一流的书

    用户1756920
  • Linux Ubuntu 16.04 p

    os.walk(top,topdown=True,onerror=None,followlinks=False)

    py3study
  • 深度解析 | 用AI帮助听障人群,一共需要几步?

    你走进澡堂,雾气弥漫。眼睛看到的人影模模糊糊。既看不清楚细节,也不知道是谁,只能看到大概轮廓。

    量子位
  • 语言计算:序列标注前沿技术研究

    大家知道,序列标注、文本分类、句对关系判断和生成式任务并称自然语言处理四大基础技术支柱。序列标注作为最基础的语言计算任务已在命名实体识别、词性标注、分词以及属性...

    腾讯云AI
  • 现场直击 | 图灵奖得主Silvio Micali上海之行讲了啥?都在这里了

    作为当下最热门的行业话题,区块链以其颠覆性的技术理念,正在影响着各行各业。今天虽然天气阴沉,但仍不减现场氛围的火爆,活动现场被陆陆续续的参会观众坐得满满当当,同...

    区块链大本营

扫码关注云+社区

领取腾讯云代金券