首页 > 编程知识 正文

朴素贝叶斯算法实现(朴素贝叶斯分类器原理)

时间:2023-05-04 03:12:04 阅读:77904 作者:312

请每天点击干货好文分享关注

欢迎致电天善智能微信公众号。 我们是专门从事商务智能BI、大数据、数据分析领域的垂直社区。

邀请对商务智能BI、数据分析挖掘、大数据、机器学习、python、r感兴趣的同学加入微信: fridaybifly、头条新闻爱好者交流群。 数据爱好者们在这里。

一.朴素贝叶斯分类的r函数介绍

1、朴素贝叶斯分类算法的实现函数

r的e1071包中的朴素贝叶斯函数实现朴素贝叶斯算法。 具体的函数格式如下。

朴素贝叶斯(x,y,laplace=0) )。

一般变量的具体参数说明如下。

朴素贝叶斯(公式、数据、laplace=0,subset ) ) ) ) ) ) ) ) ) )。

一般变量的具体参数说明如下。

2、朴素贝叶斯分类算法的预测函数

predict(object,newdata,type=c('class ',' raw ' ) )常见变量的具体参数描述如下:

二、具体案例演示

通过一个具体例子,给出朴素贝叶斯算法,并利用ROC曲线评价模型的性能。 具体数据集来自于r中mlbench包的附属数据集PimaIndiansDiabetes2,基于朴素贝叶斯算法识别糖尿病患者。

1、数据解读

最后一个是分类变量,剩下的是参数

2、代码解释

注:

str函数在查看数据结构时,类变量必须是因子型变量,如果是其他类型的变量,则程序在后续分析时报告错误。

)2) summary函数对数据进行描述性统计,观察有无异常值,出现异常值等时,也可以用boxplot、boxplot.stats等函数进行后续分析

注:

VIM包和mice包可用于缺失值的搜索,具体函数为md.pattern、aggr、na.omit、

complete.cases等以前两个函数很多。 基于aggr的缺损值可视化搜索结果如下。

)2) caret包中的preProcess函数可以进行缺失值的插值工作,preProcess函数的有用性很大,所以这里重点写一下。

preProcess函数可以进行数据标准化/规范化处理和数据缺失值的插值工作,具体函数格式如下:

preprocess(x,method,na.remove=TRUE,k=5)常见变量的具体参数说明如下:

注:

caret软件包的createDataPartition函数可以对数据进行等比采样,具体函数格式如下:

创建数据分区(x,times=1,p,list=FALSE ) )。

其中times为提取次数,1即可; p是提取的概率,也就是数据量。list是不是作为列表输出,使用FALSE,在TRUE中后续的程序会报告错误哦

)2)说到采样,我会想到sample函数。 sample函数是随机采样。 (当然具体代码也可以实现等比,但很麻烦。 ) caret软件包的createDataPartition函数是实现等比采样的好方法。

追记:处理不平衡分类时,请想起DMwR软件包的SMOTE函数!

注:

gmodels软件包的CrossTable函数可以进行模型评价,结果如下:

上图可以得到灵敏度、特异性、精度、伪正率等多种模型性能的指标。 以下叙述的ROC曲线是根据假正率和灵敏度这两个指标作成的。

)2) ROCR包的prediction函数和performance函数可以联合绘制ROC曲线。 首先,让我们来看看这两个函数的函数形式。 一般变量的具体参数说明如下。

pROC软件包也可以完成ROC曲线。 具体代码如下。

建议用pROC包裹。 也给出AUC值。 AUC值的范围为0.5-1,越大表示模型的效果越好。

三.总结

模型的预测正确率为73.44%,但gmodels软件包的CrossTable函数得到的结果预测为31个阳性但阴性(假阴性)。 这很可怕,表明模型拟合不好。

本文的目的是了解朴素贝叶斯算法的建模过程和联想相关函数。

邀请对商务智能BI、数据分析挖掘、大数据、机器学习、python、r感兴趣的同学加入微信: fridaybifly、头条新闻爱好者交流群。 数据爱好者们在这里。

转载请保留以下内容。

这篇文章来自天善社区的瘦歌博客。

原文地址: https://ask.hello bi.com/blog/sunshine 0503/6285

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。