R语言朴素贝叶斯分类上机指导_第1页
R语言朴素贝叶斯分类上机指导_第2页
R语言朴素贝叶斯分类上机指导_第3页
R语言朴素贝叶斯分类上机指导_第4页
R语言朴素贝叶斯分类上机指导_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

朴素贝叶斯分类上机指导、实验目的:1.掌握矩阵数据的输入,输出,以及矩阵和数据框数据的转换,认识一下list型数据。2.理解并掌握朴素贝叶斯分类原理。3•会使用klaR包中的NaiveBayes函数实现贝叶斯分类算法。二、 实验内容:本实验利用朴素贝叶斯分类方法对课本 P144页playtennis数据集建立模型并预测。三、 实验步骤:1•将课本P144页playtennis数据以矩阵形式输入,注意理解下面红色代码。data<-matrix(c("sunny","hot","high","weak","no","sunny","hot","high","strong","no","overcast","hot","high","weak","yes","rain","mild","high","weak","yes","rain","cool","normal","weak","yes","rain","cool","normal","strong","no","overcast","cool","normal","strong","yes","sunny","mild","high","weak","no","sunny","cool","normal","weak","yes","rain","mild","normal","weak","yes","sunny","mild","normal","strong","yes","overcast","mild","high","strong","yes","overcast","hot","normal","weak","yes","rain","mild","high","strong","no"),byrow=TRUE,dimnames=list(day=c(),condition=c("outlook","temperature","humidity","wind","playtennis")),nrow=14,ncol=5);#上网查询dimnames的用法#输出一下data数据:#将矩阵转化成数据框>data1<-data.frame(data)>data1outlooktemperaturehumidity windplaytennis1sunnyhothighweakno2sunnyhothighstrongno3overcasthothighweakyes4rainmildhighweakyes5raincoolnormalweakyes6raincoolnormalstrongno7overcastcoolnormalstrongyes8sunnymildhighweakno9sunnycoolnormalweakyes10rainmildnormalweakyes11sunnymildnormalstrongyes12overcastmildhighstrongyes13overcasthotnormalweakyes14rainmildhighstrongno#将手动输入的数据保存成txt文件>write.table(data1,file="playtennis.txt",sep="")#可以重新读入保存的txt文件data2<-read.table("playtennis.txt",head=TRUE)2.理解并掌握朴素贝叶斯分类原理,读懂下列代码#算出去玩与不玩的先验概率prior.yes<-sum(data2[,5]=="yes")/length(data2[,5]);}}prior.no<-sum(data2[,5]=="no")/length(data2[,5]);#建立朴素贝叶斯分类函数bayespre<-function(condition){post.yes<-sum((data2[,1]==condition[1])&(data2[,5]=="yes"))/sum(data2[,5]=="yes")*sum((data2[,2]==condition[2])&(data2[,5]=="yes"))/sum(data2[,5]=="yes")*sum((data2[,3]==condition[3])&(data2[,5]=="yes"))/sum(data2[,5]=="yes")*sum((data2[,4]==condition[4])&(data2[,5]=="yes"))/sum(data2[,5]=="yes")*prior.yes;post.no<-sum((data2[,1]==condition[1])&(data2[,5]=="no"))/sum(data2[,5]=="no")*sum((data2[,2]==condition[2])&(data2[,5]=="no"))/sum(data2[,5]=="no")*sum((data2[,3]==condition[3])&(data2[,5]=="no"))/sum(data2[,5]=="no")*sum((data2[,4]==condition[4])&(data2[,5]=="no"))/sum(data2[,5]=="no")*prior.no;return(list(prob.yes=post.yes,prob.no=post.no,prediction=ifelse(post.yes>=post.no,"yes","no")));#利用建立的朴素贝叶斯函数做预测bayespre(c("rain","hot","high","strong"))$prob.yes[1]0.005291005$prob.no[1]0.02742857$prediction[1]"no"#这些结果是多少?用函数bayespre()算一下,你能手动算出来吗?把你的算式写出来bayespre(c("sunny","mild","normal","weak"))bayespre(c("overcast","mild","normal","weak"))bayespre(c("sunny","cool","high","strong"))3使用klaR包中的NaiveBayes函数实现贝叶斯分类算法NaiveBayes()函数的语法和参数如下:NaiveBayes(formula,data, …,subset,na.action=na.pass)NaiveBayes(x,grouping,prior,usekernel=FALSE,fL=0, •…)formula指定参与模型计算的变量,以公式形式给出,类似于 y=x1+x2+x3;data用于指定需要分析的数据对象;na.action指定缺失值的处理方法,默认情况下不将缺失值纳入模型计算,也不会发生报错信息,当设为“na.omit”时则会删除含有缺失值的样本;x指定需要处理的数据,可以是数据框形式,也可以是矩阵形式;grouping为每个观测样本指定所属类别;prior可为各个类别指定先验概率,默认情况下用各个类别的样本比例作为先验概率;usekernel指定密度估计的方法(在无法判断数据的分布时,采用密度密度估计方法) ,默认情况下使用标准的密度估计,设为 TRUE时,则使用核密度估计方法;fL指定是否进行拉普拉斯修正, 默认情况下不对数据进行修正,当数据量较小时,可以设置该参数为1,即进行拉普拉斯修正。#通过抽样建立训练样本和测试样本index<-sample(2,size=nrow(iris),replace=TRUE,prob=c(0.75,0.25))train<-iris[index==1,]test<-iris[index==2,]#加载R包并使用朴素贝叶斯算法library(MASS)library(klaR)#因子化train$Species<-as.factor(train$Species)res2<-NaiveBayes(Species~.,data=train)pre<-predict(res2,newdata=test[,1:4])#生成实际与预判交叉表和预判精度table(test$Species,pre$class)23110000920011sum(diag(table(test$Species,pre$class)))/sum(table(test$Species,pre$class))0.9375读懂上面的例子。仿照上面的例子使用klaR包中的NaiveBayes函数建立playtennis・txt贝叶斯分类模型,并预测上面的例子。c("rain","hot","high","strong")c("sunny","mild","normal","weak")c("overcast","mild","normal","weak")c("sunny","cool","high","strong")#将上面的情况建立dataframe作为测试题test<-data.frame()test<-rbind(c("rain","

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论