首页 R与数据挖掘(学习决策树和随机森林的R语句)汇总

R与数据挖掘(学习决策树和随机森林的R语句)汇总

举报
开通vip

R与数据挖掘(学习决策树和随机森林的R语句)汇总PAGE\*MERGEFORMAT#数据挖掘报告PAGE\*MERGEFORMAT#乳腺癌的分析摘要此次实验的目的主要是研究分类,对乳腺癌的类型良性的还是恶性的进行分类。比较一下什么方法更好。数据共包括699个观测值,每个观测有11个变量。有缺失值。主要是运用了R和SAS两个软件进行分析的。R中用的方法都是数据挖掘中的一些典型方法。SAS中是采用了判别与聚类的方法。原始数据已经将类别分好了,对于分类研究使用不同的方法看一下哪种方法的精度更高。关键词:数据挖掘方法、判别、聚类PAGE\*MERGEFOR...

R与数据挖掘(学习决策树和随机森林的R语句)汇总
PAGE\*MERGEFORMAT#数据挖掘报告PAGE\*MERGEFORMAT#乳腺癌的分析摘要此次实验的目的主要是研究分类,对乳腺癌的类型良性的还是恶性的进行分类。比较一下什么方法更好。数据共包括699个观测值,每个观测有11个变量。有缺失值。主要是运用了R和SAS两个软件进行分析的。R中用的方法都是数据挖掘中的一些典型方法。SAS中是采用了判别与聚类的方法。原始数据已经将类别分好了,对于分类研究使用不同的方法看一下哪种方法的精度更高。关键词:数据挖掘方法、判别、聚类PAGE\*MERGEFORMAT#c)数据是共有16个缺失值的,在"bare_nuclei"这个变量中d)对缺失值的处理共采用了三种方法:直接删除、利用均值进行插补、利用中位数进行插补。e)后面采用的方法最基本的数据是采用了中位数的方法进行差补以后的。数据的描述:—共有699个观测,11个变量变量解释:"id""clump_thickness"""uniformity_cell_size""uniformity_cell_shape""marginal_adhesion""single_epithelialcell_size""bare_nuclei""bland_chromatin""normal_nucleoli""mitoses""btype"肿块的密度取值1-10细胞的大小均匀度取值1-10细胞的形状的均匀度取值1-10边缘部分的黏着度取值1-10单一的上皮细胞的大小取值1-10裸露细胞核取值1-10染色质取值1-10正常的细胞核取值1-10有丝分裂取值1-10类型良2性-,4-恶性R语言采用的方法介绍共5种方法(决策树,神经网络,支持向量机,随机森林,最近邻方法)A)数据的基本处理读入txt格式数据,将btype设为分类变量breast_cancer<-read.delim("breast_cancer.txt");breast_cancer$btype<-factor(breast_cancer$btype);显示16个缺失值所在的行数which(complete.cases(breast_cancer)==F);[1]2441140146159165236250276293295298316322412618缺失值的处理方法直接删除breast_cancer_delete<-na.omit(breast_cancer);均值进行差补breast_cancer_mean<-breast_cancer;for(rinwhich(!complete.cases(breast_cancer))){breast_cancer_mean[r,which(is.na(breast_cancer[r,]))]<-apply(data.frame(breast_cancer[,which(is.na(breast_cancer[r,]))]),2,mean,na.rm=T);}中位数进行插补breast_cancer_median<-breast_cancer;for(rinwhich(!complete.cases(breast_cancer)))breast_cancer_median[r,which(is.na(breast_cancer[r,]))]<-apply(data.frame(breast_cancer[,which(is.na(breast_cancer[r,]))]),2,median,na.rm=T);B)方法介绍1)分类树使用的包rpart、rpart.plota)使用中位数填补后的数据进行建模分析以及分析判错率#分类树,请先安装rpart程序包library(rpart);set.seed(100);breast.part<-rpart(factor(btype)~.,data=breast_cancer_median,method="class");table=table(predict(breast.part,breast_cancer_median,type="class"),breast_cancer_median$btype);计算错判率pError=1-sum(diag(table))/nrow(breast_cancer_median);cat(”分类的错判率pError为:","\n",pError,"\n");分类的错判率pError为:0.03576538画图,请先安装rpart.plot程序包library(rpart.plot);plotcp(breast.part,minline=TRUE);#交叉验证错误率与分类树节点数的关系」D」」山①>帀-BH-?.xJ(??)plot(breast.part,uniform=T,branch=0.4,compress=T);text(breast.part,use.n=T);printcp(breast.part);#查看这棵树的复杂性参量 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf CP交叉验证错误率nsplit叶节点数减一relerrorxerror预测误差xstd10.78008301.000001.000000.05214220.05394210.219920.261410.03141530.02489620.165980.186720.02692440.01244830.141080.174270.02607150.01000060.103730.174270.026071误差原则:在剪枝理论中,比较著名的 规则 编码规则下载淘宝规则下载天猫规则下载麻将竞赛规则pdf麻将竞赛规则pdf 就是1b£E(1标准差)规则.其意思是:首先要保证预测误差(通过交叉验证获得,在程序屯表示为xerrar)尽量小,但不一定要取最小值•而是允许它在“最小的误差—个相应标准差律勺范围内,然后在此范围内选取尽量小的复杂性参量‘进而以它为依据进行剪枝「遠个规则体现了兼顾树的规模(复杂性}和误差大小的思想:因为一般说来•随着拆分的增多•复杂性蔘蜀会单调下降(纯度越來越高「但是预测误差则会先降后升’这样•就无法使复杂性和误差同时降到疑低・因此允许误差可以在一个标淮差内波动0参考文献基于R软件rpart包的分类与回归树应用谢益辉(中国人民玄学统计学院,北京IOOS72)#剪枝breast.part2<-prune(breast.part,cp=0.016);rpart.plot(breast.part2);#剪枝以后的分类树图b)进行交叉验证:由于数据的观测并不是太大(699)采取3折交叉验证n=699;zz1=1:n;zz2=rep(1:3,ceiling(699/3))[1:n];set.seed(100);zz2=sample(zz2,n);nmse=list(NULL,NULL);c<-breast_cancer_median;for(iin1:3){data.train=c[-c(which(zz2==i)),];data.test=c[c(zz2==i),];d.train<-rpart(factor(btype)~.,data=data.train,method="class");table1=table(predict(d.train,data.train,type="class"),data.train$btype);table2=table(predict(d.train,data.test,type="class"),data.test$btype);nmse[[1]][i]=1-sum(diag(table1))/nrow(data.train);nmse[[2]][i]=1-sum(diag(table2))/sum(table2);cat("rpartmethod第",i,"折:","\n");cat(“训练集错误率:",nmse[[l]][i],"\n");cat(“测试集错误率:",nmse[[2]][i],"\n","\n");}NMSE=array();NMSE[l]=sum(nmse[[l]])/3;NMSE[2]=sum(nmse[[2]])/3;cat("rpartmethod训练集上的平均错误率为:","\n",NMSE[1],"\n");cat("rpartmethod测试集上的平均错误率为:","\n",NMSE[2],"\n");结果:rpartmethod第1折:训练集错误率:0.04935622测试集错误率:0.05579399rpartmethod第2折:训练集错误率:0.03433476测试集错误率:0.05150215rpartmethod第3折:训练集错误率:0.04077253测试集错误率:0.04291845rpartmethod训练集上的平均错误率为:0.04148784rpartmethod测试集上的平均错误率为:0.050071532)神经网络使用的包有nneta)使用中位数填补后的数据进行建模分析以及分析判错率#请先安装nnet程序包library(nnet);a<-nnet(factor(btype)~.,data=breast_cancer_median,size=6,rang=0.1,decay=5e-4,maxit=1000);a.predict<-predict(a,data=breast_cancer_median,type='class');table=table(a.predict,breast_cancer_median$btype);#计算错判率pError=1-sum(diag(table))/nrow(breast_cancer_median);cat("nnet分类的错判率pError为:","\n",pError,"\n");结果显示全部判断正确TOC\o"1-5"\h\za.predict242458040241nnet分类的错判率pError为:0b)使用三折交叉验证n=699;zz1=1:n;zz2=rep(1:3,ceiling(699/3))[1:n];set.seed(100);zz2=sample(zz2,n);nmse=list(NULL,NULL);c<-breast_cancer_median;for(iin1:3){data.train=c[-c(which(zz2==i)),];data.test=c[c(zz2==i),];d.train<-nnet(factor(btype)~.,data=data.train,size=6,rang=0.1,decay=5e-4,maxit=1000);table1=table(predict(d.train,data.train,type="class"),data.train$btype);table2=table(predict(d.train,data.test,type="class"),data.test$btype);nmse[[1]][i]=1-sum(diag(table1))/nrow(data.train);nmse[[2]][i]=1-sum(diag(table2))/sum(table2);cat("\n","nnetmethod第",i,"折:","\n");cat(“第",i,"折训练集的错误率为:","\n",nmse[[l]][i],"\n");cat(“第",i,"折测试集的错误率为:","\n",nmse[[2]][i],"\n","\n");}NMSE=array();NMSE[l]=sum(nmse[[l]])/3;NMSE[2]=sum(nmse[[2]])/3;cat("nnetmethod训练集上的平均错误率为:","\n",NMSE[1],"\n");cat("nnetmethod测试集上的平均错误率为:","\n",NMSE[2],"\n");结果:nnetmethod第1折:第1折训练集的错误率为:0第1折测试集的错误率为:0.05150215nnetmethod第2折:第2折训练集的错误率为:0.002145923第2折测试集的错误率为:0.08583691nnetmethod第3折:第3折训练集的错误率为:0第3折测试集的错误率为:0.03862661nnetmethod训练集上的平均错误率为:0.0007153076nnetmethod测试集上的平均错误率为:0.058655223)支持向量机使用的包有e1071,ggplota)ggplot这个包画图的功能很强大,就是可以使图输出到pdf,等好多形式的输出可以拿出任意两个变量来画图给个直观的印象那个变量对分类影响较明显,例如使用一下两个变量来看,这里之举一个看。#绘制以bare_nuclei为横轴频数为中轴的直方图,请先安装ggplot2程序包library(ggplot2);#载入绘图函数报c6<-qplot(bare_nuclei,data=breast_cancer_median,colour=factor(btype));ggsave("svm.pdf",width=6,height=6);#将图保存为PDF格式II46810bare_nucleitadorfbtype)b)使用中位数填补后的数据进行建模分析以及分析判错率#请先安装e1071程序包library(e1071);s<-svm(factor(btype)~.,data=breast_cancer_median);pre=predict(s,breast_cancer_median,type='class');plot(pre~breast_cancer_median$btype);table=table(pre,breast_cancer_median$btype);table;#计算错判率error<-1-sum(diag(table))/nrow(breast_cancer_median);cat("SVM分类的错判率error为:","\n",error,"\n");结果:pre2424465412236SVM分类的错判率error为:0.02432046■o寸C-Jcoogooc-jo24breast_canc:er_median$bb/pec)3折交叉验证的结果n=699;zz1=1:n;zz2=rep(1:3,ceiling(699/3))[1:n];set.seed(100);zz2=sample(zz2,n);nmse=list(NULL,NULL);c<-breast_cancer_median;for(iin1:3){data.train=c[-c(which(zz2==i)),];data.test=c[c(zz2==i),];d.train<-svm(factor(btype)~.,data=data.train);table1=table(predict(d.train,data.train,type="class"),data.train$btype);table2=table(predict(d.train,data.test,type="class"),data.test$btype);nmse[[1]][i]=1-sum(diag(table1))/nrow(data.train);nmse[[2]][i]=1-sum(diag(table2))/sum(table2);cat("\n","svmmethod第",i,"折:","\n");cat(“训练集的错误率为:","\n",nmse[[l]][i],"\n");cat(“测试集的错误率为:","\n",nmse[[2]][i],"\n","\n");}NMSE=array();NMSE[l]=sum(nmse[[l]])/3;NMSE[2]=sum(nmse[[2]])/3;cat("svmmethod训练集上的平均错误率为:","\n",NMSE[1],"\n");cat("svmmethod测试集上的平均错误率为:","\n",NMSE[2],"\n");结果:svmmethod第1折:训练集的错误率为:0.02575107测试集的错误率为:0.03433476svmmethod第2折:训练集的错误率为:0.027897测试集的错误率为:0.04291845svmmethod第3折:训练集的错误率为:0.02145923测试集的错误率为:0.03862661svmmethod训练集上的平均错误率为:0.02503577svmmethod测试集上的平均错误率为:0.038626614)随机森林方法使用的包randomForesta)使用中位数填补后的数据进行建模分析并输出变量的重要性#请先安装randomForest程序包library(randomForest);r.breast<-randomForest(factor(btype)~.,data=breast_cancer_median,ntree=2000,importance=T,replace=TRUE,keep.inbag=TRUE,norm.votes=FALSE,oob.times=TRUE,proximity=T);r.breast;summary(r.breast);imp<-importance(r.breast);imp;impvar<-imp[order(imp[,3],decreasing=TRUE),];impvar;varImpPlot(r.breast);getTree(r.breast,k=1,labelVar=FALSE);结果:class.error0.026200870.03734440Confusionmatrix:2424461249232tcr5_ij':le;i--eiriifrrriil/_rp|_,-i.^-o--cluno_:Hckncc!:-e--tlandchijnatrouniformiiy_celi_srape--D--rcrirsl_nucleoh…占…marginaladhesiono-0-1.1.1■■二2.2unfj-mt/cell,size--cIirirrrrily_fp||_i-lH[obare_nucl&i-0■■-□millcl'rjTatr0Bin川Ihnliril:Hll_si^0normsl_nLcleol0clumpthicknessc.HldlL.illdl_dJ1七LImitoseso1111104080MytiiiD^-ittiyizGiii24MeanDecreaseAccuracy重要性bare_nuclei2.30986743.96706532.2676480uniformity_cell_size1.87425312.70701891.9318088clump_thickness1.87516113.50292391.9280315bland_chromatin1.10957893.01804011.8088237uniformity_cell_shape1.22527722.85703781.7930345normal_nucleoli1.60260171.86527281.4735789marginal_adhesion0.98895582.08229431.3521871single_epithelialcell_size1.14645651.06883831.0714372mitoses1.05742800.95296730.9765416以图示显示变量的重要性r.breastb)使用三折交叉验证的结果n=699;zz1=1:n;zz2=rep(1:3,ceiling(699/3))[1:n];set.seed(100);zz2=sample(zz2,n);nmse=list(NULL,NULL);c<-breast_cancer_median;for(iin1:3){data.train=c[-c(which(zz2==i)),];data.test=c[c(zz2==i),];d.train<-randomForest(factor(btype)~.,data=data.train,ntree=2000,importance=T,replace=TRUE,keep.inbag=TRUE,norm.votes=FALSE,oob.times=TRUE,proximity=T);table1=table(predict(d.train,data.train,type="class"),data.train$btype);table2=table(predict(d.train,data.test,type="class"),data.test$btype);nmse[[1]][i]=1-sum(diag(table1))/nrow(data.train);nmse[[2]][i]=1-sum(diag(table2))/sum(table2);cat("\n","randomForestmethod第",i,"折:","\n");cat(“训练集的错误率为:","\n",nmse[[l]][i],"\n");cat(“测试集的错误率为:","\n",nmse[[2]][i],"\n","\n");}NMSE=array();NMSE[l]=sum(nmse[[l]])/3;NMSE[2]=sum(nmse[[2]])/3;cat("randomForestmethod训练集上的平均错误率为:","\n",NMSE[1],"\n");cat("randomForestmethod测试集上的平均错误率为:","\n",NMSE[2],"\n");结果:randomForestmethod第1折:训练集的错误率为:0测试集的错误率为:0.02575107randomForestmethod第2折:训练集的错误率为:0测试集的错误率为:0.04291845randomForestmethod第3折:训练集的错误率为:0测试集的错误率为:0.03433476randomForestmethod训练集上的平均错误率为:0randomForestmethod测试集上的平均错误率为:0.034334765)最近邻方法用到的包有kknna)通过循环,以第一折测试集上的正确率最好为准则,选择k值。library(igraph);library(kknn);corr=array();m=699;zz1=1:m;zz2=rep(1:3,ceiling(699/3))[1:m];set.seed(100);zz2=sample(zz2,m);data.test=breast_cancer_median[zz2==3,];data.train=breast_cancer_median[-c(which(zz2==3)),];for(iin7:100){a=kknn(factor(btype)~.,test=data.test,train=data.train,k=i);table=table(data.test$btype,a$fit);corr[i]=sum(diag(table))/sum(table);}plot(0,0.3,xlim=c(6,100),ylim=c(0.5,1),ylab="正确率");for(iin7:100)points(i,corr[[i]]);identify(corr);b)接下来是交叉验证的结果#3折交叉验证,k取11n=699;zz1=1:n;#zz1为所有观测值(行)的下标zz2=rep(1:3,ceiling(699/3))[1:n];set.seed(100);zz2=sample(zz2,n);#将样本随机分成三份,用zz2标记分到哪一份nmse=list(NULL,NULL);c<-breast_cancer_median;#为了代码简洁将原来的数据赋值给cfor(iin1:3){data.train=c[-c(which(zz2==i)),];#训练集data.test=c[c(zz2==i),];#测试集d.train<-kknn(factor(btype)~.,test=data.train,train=data.train,k=11);#训练结果d.test<-kknn(factor(btype)~.,test=data.test,train=data.train,k=11);#训练结果table1=table(predict(d.train,data.train,type="class"),data.train$btype);#训练集混淆矩阵table2=table(predict(d.test,data.test,type="class"),data.test$btype);#测试集混淆矩阵nmse[[1]][i]=1-sum(diag(table1))/nrow(data.train);#训练集错误率nmse[[2]][i]=1-sum(diag(table2))/sum(table2);#测试集错误率cat("\n","kknnmethod第",i,"折:","\n");cat(“训练集的错误率为:","\n",nmse[[l]][i],"\n");cat(“测试集的错误率为:","\n",nmse[[2]][i],"\n","\n");}NMSE=array();NMSE[l]=sum(nmse[[l]])/3;#训练集平均错误率NMSE[2]=sum(nmse[[2]])/3;#测试集平均错误率cat("knnmethod训练集上的平均错误率为:","\n",NMSE[1],"\n");cat("knnmethod测试集上的平均错误率为:","\n",NMSE[2],"\n");结果:kknnmethod第1折:训练集的错误率为:0.01502146测试集的错误率为:0.03433476kknnmethod第2折:训练集的错误率为:0.01287554测试集的错误率为:0.06008584kknnmethod第3折:训练集的错误率为:0.01072961测试集的错误率为:0.0472103knnmethod训练集上的平均错误率为:0.01287554knnmethod测试集上的平均错误率为:0.0472103C)方法比较方法rpartnnetE1.-TTIrForestknn训练集平均误差0.041487840.0007153080.0250357700.01287554测试集平均误差0.050071530.058655220.033626610.034334760.0472103可以看出随机森林在训练集和测试集的效果都是最好的。
本文档为【R与数据挖掘(学习决策树和随机森林的R语句)汇总】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
酷酷龙
暂无简介~
格式:doc
大小:170KB
软件:Word
页数:18
分类:高中语文
上传时间:2022-09-25
浏览量:0