《R数据挖掘实例》PPT课件.pptx

上传人:san****019 文档编号:20993690 上传时间:2021-04-21 格式:PPTX 页数:99 大小:1.07MB
收藏 版权申诉 举报 下载
《R数据挖掘实例》PPT课件.pptx_第1页
第1页 / 共99页
《R数据挖掘实例》PPT课件.pptx_第2页
第2页 / 共99页
《R数据挖掘实例》PPT课件.pptx_第3页
第3页 / 共99页
资源描述:

《《R数据挖掘实例》PPT课件.pptx》由会员分享,可在线阅读,更多相关《《R数据挖掘实例》PPT课件.pptx(99页珍藏版)》请在装配图网上搜索。

1、探索性数据分析 Communities and CrimeUnnormalized Data Set (Data source) 2 一、数据预处理#导入crime数据,修改变量名称,并查看数据属性crim=read.table(crim.txt,sep=,na.string=?)name=read.table(attr_vol.txt)name=name,2colnames(crim)-namesummary(crim) dim(crim) 3观测值:2215 变量数:147部分数据严重缺失 四、犯罪率分布情况 4在3月份的行业销售旺季,东北地区及北部地区销售额占到公司全月总额的70%,西部

2、地区仅为10%,西部死去市场潜力还需深度挖掘。可看出violentPerPop nonViolPerPop都出现了不同程度的拖尾特征,考虑对数据进行对数变换 由图可知 四、对数化变换 5做变换后两变量数据较为对称由图可知 四、犯罪率地区差异 6 三个地区犯罪率的中位数由西向东递减,分布相对集中,但东部地区出现了较为明显的离群值 7 缺失值处理nrow(crim!complete.cases(crim),) #缺失值项的总行数#基本每行都有缺失值na.sta=c()for(i in 1:2215)na.sta=c(na.sta,length(which(is.na(crimi,)max(na.s

3、ta)#缺失值基本在20左右,没有#缺失过于严重的样本,无需删除 8 缺失值处理:临近值插补从数据集中选取若干条其他属性和它相似的样本(即和它在空间欧式距离最短的n 条样本),求其中位数进行插补crim$gangUnit=as.factor(gangUnit)crim1=crim,c(6:126,128:147)library(cluster) #调用R 语言中的cluster 包#计算空间距离dist.mtx - as.matrix(daisy(crim1,stand=T) #计算这2215 个样品的空间距离 9 缺失值处理:临近值插补#先处理非因子型变量的缺失值,需要将以下步骤进行两次fo

4、r(r in which(!complete.cases(crim1)crim1r,which(is.na(crim1r,) 0.7) Linear Regressionfor(i in 1:5)crim.test=data.frame(crim1ddi,)crim.train=data.frame(crim1-ddi,)lm.vio=lm(violentPerPop.,data=crim.train,c(6:129,146)pre.train=predict(lm.vio)pre.test=predict(lm.vio, crim.test,c(6:129,146)NM.train=mean

5、(crim.train$violentPerPop-pre.train)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2)NM.test=mean(crim.test$violentPerPop-pre.test)2)/mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2)M.train=mean(crim.train$violentPerPop-pre.train)2) M.test=mean(crim.test$violentPerPop-p

6、re.test)2)NMSE.train=c(NMSE.train,NM.train)NMSE.test=c(NMSE.test,NM.test)MSE.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test) 16 Linear Regression 17 Stepwise#逐步回归:全部、前向、后向lm1both-step(lm.vio,direction= both)lm1forward-step(lm.vio,direction= forward)lm1back-step(lm.vio,direction= backward)final

7、.lm-step(lm.vio)summary(final.lm) 18 Stepwise 19 Stepwise 20 Stepwise:diagnose 21 Stepwise 22 Stepwise 23 Conclusion 由结果可以看出,逐步回归调整后的的R-Square为0.6957,模型检验的结果显示,回归的残差项并不满足正态性假定,同时模型的AIC值25573.06依然过高,这启发我们建立更加精确的预测模型。 24 Ridge 25 2ridge 201 1 12ridge 01 121 argmin argminsubject to p pN i ij j ji j jpN

8、 i ij ji jp jj y xy xs Ridgecor(crim,6:129,use=complete.obs) #变量间的相关性,计算时不考虑缺失值symnum(cor(crim,6:129,use=complete.obs) #简单明显示出变量间的相关#只截取部分结果显示,可以看出#变量之间的共线性较为明显 26 Ridgelibrary(MASS)ridgelm-lm.ridge(violentPerPop.,data=crim.train,c(6:129,146),lambda=seq(0,200,0.01), model =TRUE)names(ridgelm)ridgelm

9、$lambdawhich.min(ridgelm$GCV) #找到GCV 最小时对应的lambda#广义的交叉验证准则GCV,越小越好ridgelm$coef,which.min(ridgelm$GCV) #找到GCV 最小时对应的系数 27 Ridge#lamda 同GCV 之间关系的图形plot(ridgelm$lambda,ridgelm$GCV,type=l)abline(v=ridgelm$lambdawhich.min(ridgelm$GCV),col=green) 28 LassoLASSO方法 在线性模型中,人们必须选择合适的变量;比如常用的逐步回归法就是选择显著的变量而抛弃那

10、些不显著的。Tibshirani(1996)1提出了一个新的方法来处理变量选择的问题。该方法在模型系数绝对值的和小于某常数的条件下,谋求残差平方和最小。该方法既提供了如子集选择方法那样的可以解释的模型,也具有岭回归那样的稳定性。它不删除变量,但使得一些回归系数收缩、变小,甚至为0。因而,该方法被称为lasso(least absolute shrinkage and selection operator,最小绝对值收缩和选择算子2)。 292lasso 01 11 argminsubject to | | pN i ij ji jp jj y xs Lasso#将数据集中的因子变量gangUn

11、it转换为哑元变量#训练集gangUnit5=rep(0,1772);gangUnit5which(crim.train$gangUnit=5)=1gangUnit10=rep(0,1772);gangUnit10which(crim.train$gangUnit=10)=1crim.train1=crim.train,c(6:129);crim.train1$gangUnit=NULLcrim.train2=data.frame(crim.train1,1:121,gangUnit5,gangUnit10,crim.train1,-(1:121)#测试集gangUnit5=rep(0,443

12、);gangUnit5which(crim.test$gangUnit=5)=1gangUnit10=rep(0,443);gangUnit10which(crim.test$gangUnit=10)=1crim.test1=crim.test,c(6:129);crim.test1$gangUnit=NULL crim.test2=data.frame(crim.test1,1:121,gangUnit5,gangUnit10,crim.test1,-(1:121) 30 Lasso(lars)library(lars)attach(crim.train)lassolm-lars(as.ma

13、trix(crim.train2),violentPerPop)Lassolm 31 Lasso(msgps)library(msgps)fit - msgps(as.matrix(crim.train2),crim.train$violentPerPop)summary(fit) 32 Lasso(lars)lassolm$Cp 33 Lasso(msgps)coef(fit) #extract coefficients at t selected by model selection criteriacbind(coef(fit),ridgelm$coef,which.min(ridgel

14、m$GCV)1:10,) 注:如图,根据前三个准则得出的最终模型系数基本一致,最后一列为岭回归Cp原则的系数,可以看出lasso方法可以使更多的系数“收缩”到0。 34 Lasso(msgps)plot(fit,criterion=cp,main=lasso) 35 Lasso(lars) 36 Lasso(lars)predict11-predict(lassolm,data.matrix(crim.train2),mode=fraction,s=best,type=fit)predict1-predict(lassolm,data.matrix(crim.test2),mode=fract

15、ion,s=best,type=fit)cat(lasso 训练集上的NMSE 为:, mean(crim.train$violentPerPop-as.numeric(predict11$fit)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2), n)lasso 训练集上的NMSE 为: 0.3050613 (依据10 折交叉验证)cat(lasso 测试集上的NMSE 为:,mean(crim.test$violentPerPop-as.numeric(predict1$fit)2)/mean(mean(c

16、rim.test$violentPerPop)-crim.test$violentPerPop)2), n) lasso测试集上的NMSE 为: 0.3388574 (依据10 折交叉验证) 37 Lasso(lars)predict11-predict(lassolm,data.matrix(crim.train2),mode=step,s=best,type=fit)predict1-predict(lassolm,data.matrix(crim.test2),mode=step,s=best,type=fit)cat(lasso 训练集上的NMSE 为:, mean(crim.trai

17、n$violentPerPop-as.numeric(predict11$fit)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2), n)#lasso 训练集上的NMSE 为:0.3248435 (依据Cp 准则)cat(lasso 测试集上的NMSE 为:,mean(crim.test$violentPerPop-as.numeric(predict1$fit)2)/mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2), n) #lasso

18、测试集上的NMSE 为: 0.3352093 (依据Cp 准则) 38 Lasso# 下面我们来看看上面(根据10 折交叉验证得出的lasso回归方程)它的残差项的正态性检验。shapiro.test(crim.train$violentPerPop-predict11$fit) #训练集上的残差检验#W = 0.8679, p-value 2.2e-16shapiro.test(crim.test$violentPerPop-predict1$fit) #测试集上的残差检验W = 0.8839, p-value 2.2e-16 可以看出上述模型的残差项仍然不满足正态性的分布假定,虽然达到了较

19、好的预测精度,但是我们的模型还需要进一步改进 39 Ridge lasso: r=1) 虽然只是参数取法上的不一致,但由于约束函数凹凸函数不同的特性(r1为凸函数)导致了最终系数特点的不一致。对于岭回归,随着t的减小,模型 系数绝对值一般“步调一致”的收缩;对于lasso回归,则更倾向于将部分变量的系数收敛到0而保持另外一些变量系数的大小来达到约束条件(这实际上增加了最终系数的差异) 对于r取值的其他情形而导致的后果也可由函数凹凸性作相似推断。具体参见 Fast Sparse Regression and Classification Jerome H. Friedman 2008 40 Ri

20、dgegangUnit5which(crim.train$gangUnit=5)=1gangUnit10=rep(0,1772);gangUnit10which(crim.train$gangUnit=10)=1crim.train1=crim.train,c(6:129);crim.train1$gangUnit=NULL crim.train2=data.frame(crim.train1,1:121,gangUnit5,gangUnit10,crim.train1,-(1:121)#测试集gangUnit5=rep(0,443);gangUnit5which(crim.test$gang

21、Unit=5)=1gangUnit10=rep(0,443);gangUnit10which(crim.test$gangUnit=10)=1crim.test1=crim.test,c(6:129);crim.test1$gangUnit=NULLcrim.test2=data.frame(crim.test1,1:121,gangUnit5,gangUnit10,crim.test1,-(1:121) 45 Generalized elastic netfit - msgps(as.matrix(crim.train2),crim.train$violentPerPop,penalty=e

22、net,alpha=0.5)#训练集predict11-predict(fit,as.matrix(crim.train2),1NMSE.train=c(NMSE.train,mean(crim.train$violentPerPop-as.numeric(predict11)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2)#测试集predict1-predict(fit,as.matrix(crim.test2),1NMSE.test=c(NMSE.test,mean(crim.test$violentPer

23、Pop-as.numeric(predict1)2)/ mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2)NMSE.train;mean(NMSE.train)NMSE.test;mean(NMSE.test) 46 Generalized elastic netpenalty=“genet”(penalty=“alasso”时计算出现奇异值系统报错) 47 Model buildingData Mining 48 K临近回归library(kknn)NMSE=c()MSE=c()for(i in 1:5)crim.tes

24、t=crim1ddi,crim.train=crim1-ddi,knn1lm-kknn(murders.,crim.train,6:130,crim.test,6:130,k=1,distance =1,kernel = rectangular)NM=mean(crim.test$murders-knn1lm$fitted.values)2)/mean(mean(crim.test$murders) -crim.test$murders)2)M=mean(crim.test$murders-knn1lm$fitted.values)2)NMSE=c(NMSE,NM)MSE=c(MSE,M) 4

25、9 虽然该算法主要用于分类。不用于拟合模型,但其较为稳定,可先利用该模型观察拟合效果以及预测精度再试图从不稳定模型中得到提升。 K临近回归 50 最终达到的预测精度如下,可见该方法的预测精度仍然较低: 回归树library(rpart) #调用rpart 包crim.test=data.frame(crim1dd1,)crim.train=data.frame(crim1-dd1,)rt.train=rpart(violentPerPop.,data=crim.train,c(6:129,146)plot(rt.train,uniform=T,branch=1, margin=0.1, cex

26、=0.9,main=violentPerPop) #画出回归树text(rt.train,cex=0.75) #在树中显示分枝的信息。printcp(rt.train) #显示回归树rt.train 每一步得出的sub-trees 的详细信息 51 回归树 52 回归树treepre.train=predict(rt.train,crim.train,c(6:129,146)cat(tree 训练集上的NMSE 为:, mean(crim.train,c(6:129,146)$violentPerPop-as.numeric(treepre.train)2)/mean(mean(crim.tr

27、ain,c(6:129,146)$violentPerPop)-crim.train,c(6:129,146)$violentPerPop)2),n)#tree 训练集上的NMSE 为: 0.3664984 treepre.test=predict(rt.train,crim.test,c(6:129,146)cat(tree 训练集上的NMSE 为:, mean(crim.test,c(6:129,146)$violentPerPop-as.numeric(treepre.test)2)/ mean(mean(crim.test,c(6:129,146)$violentPerPop)-cri

28、m.test,c(6:129,146)$violentPerPop)2),n)#tree 测试集上的NMSE 为: 0.4828972 53 回归树:五折交叉验证for(i in 1:5)crim.test=data.frame(crim1ddi,)crim.train=data.frame(crim1-ddi,)rt.train=rpart(violentPerPop.,data=crim.train,c(6:129,146)treepre.train=predict(rt.train,crim.train,c(6:129,146)treepre.test=predict(rt.train,

29、crim.test,c(6:129,146)NM.train=mean(crim.train$violentPerPop-treepre.train)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2)NM.test=mean(crim.test$violentPerPop-treepre.test)2)/mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2) M.train=mean(crim.train$violentPerPop-treepr

30、e.train)2)M.test=mean(crim.test$violentPerPop-treepre.test)2)NMSE.train=c(NMSE.train,NM.train)NMSE.test=c(NMSE.test,NM.test)MSE.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test) 54 回归树 55 Boosting(mboost)for(i in 1:5)crim.test=data.frame(crim1ddi,)crim.train=data.frame(crim1-ddi,)boost.train=bla

31、ckboost(violentPerPop.,control=boost_control(mstop=50),data=crim.train,c(6:129,146)treepre.train=predict(boost.train,crim.train,c(6:129,146)treepre.test=predict(boost.train,crim.test,c(6:129,146)NM.train=mean(crim.train$violentPerPop-treepre.train)2)/mean(mean(crim.train$violentPerPop)-crim.train$vi

32、olentPerPop)2)NM.test=mean(crim.test$violentPerPop-treepre.test)2)/ mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2)M.train=mean(crim.train$violentPerPop-treepre.train)2)M.test=mean(crim.test$violentPerPop-treepre.test)2)NMSE.train=c(NMSE.train,NM.train)NMSE.test=c(NMSE.test,NM.test)MSE

33、.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test) 56 Boosting 57 BaggingBagging 是Breiman 提出的与Boosting 相似的技术。Bagging 技术的主要思想是给定一弱学习算法和一训练集1 1 ( , ),., ( , ) n n x y x y 。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n 个训练例组成,初始训练例在某轮训练集中可以出现多次或根本不出现。训练之后可得到一个预测函数序列:1,., t h h ,最终的预测函数H 对分类问题采用投票方式,对回归问题采用简单平均方

34、法对新示例进行判别。Bagging 与Boosting 的区别在于Bagging 的训练集的选择是随机的,各轮训练集之间相互独立,而 Boosting 的训练集的选择不是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging 的各个预测函数没有权重,而Boosting是有权重的;Bagging 的各个预测函数可以并行生成,而Boosting 的各个预测函数只能顺序生成。对于象神经网 络这样极为耗时的学习方法,Bagging 可通过并行训练节省大量时间开销。以下我将通过R 语言中的ipred 包运用Bagging 算法对该数据集进行分析研究。58 Bagging(ipred)for(i

35、 in 1:5)crim.test=data.frame(crim1ddi,)crim.train=data.frame(crim1-ddi,)bagging.vio=bagging(violentPerPop.,data=crim.train,c(6:129,146),coob=T,control=rpart.control(xval=10)pre.train=predict(bagging.vio,crim.train,c(6:129,146)pre.test=predict(bagging.vio,crim.test,c(6:129,146)NM.train=mean(crim.trai

36、n$violentPerPop-pre.train)2)/mean(mean(crim.train$violentPerPop)-crim.train$violentPerPop)2)NM.test=mean(crim.test$violentPerPop-pre.test)2)/ mean(mean(crim.test$violentPerPop)-crim.test$violentPerPop)2)M.train=mean(crim.train$violentPerPop-pre.train)2)M.test=mean(crim.test$violentPerPop-pre.test)2)

37、NMSE.train=c(NMSE.train,NM.train)NMSE.test=c(NMSE.test,NM.test)MSE.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test) 59 Bagging 60 随机森林(randomForest)randomforest.violentPerPop - randomForest(violentPerPop .,data=crim.train,c(6:129,146),ntree=500,importance=TRUE,proximity=TRUE)randomforest.violen

38、tPerPop$importance #查看解释变量对模型的贡献性的大小randomforest.violentPerPop$importanceSD 61 随机森林(randomForest)#贡献度最大的前十个变量names(crim.train,c(6:129,146)sort(randomforest.violentPerPop$importance,1,decreasing=T,index.return=T)$ix1:10 plot(randomforest.violentPerPop$importanceSD)identify(1:124,randomforest.violentP

39、erPop$importanceSD,labels=names(randomforest.violentPerPop$importanceSD) 62 随机森林(randomForest) 63 随机森林(randomForest) 64 总结 65 方法 NMSE训练集 测试集传统统计方法 线性回归 0.2900 0.3729逐步回归 0.2964 0.3774lasso 0.3051 0.3389G e n e r a l i z e d elastic net 0.2938 0.3677数据挖掘 K临近回归 无 0.6257回归树 0.3529 0.4627Boosting 0.2753

40、 0.3496Bagging 0.2695 0.3589随机森林 0.3258 0.3228 Shock Data(Data source)66 数据预处理 67 shock=read.table(shock.txt,header=T)head(shock)shock$SHOCK_TYP=as.factor(shock$SHOCK_TYP)shock$SURVIVE=as.factor(shock$SURVIVE)shock$SEX=as.factor(shock$SEX)shock$RECORD=as.factor(shock$RECORD) 数据描述 68 69 数据描述 70 数据描述

41、71 数据描述Record不同时的shock type完全相同 72 数据描述 由图可知Record不同时各观测值有差异但不明显,由箱盒图可以看到 HT与RCI中存在离群值 贝叶斯分类distinguish.bayes - function(TrnX, TrnG, p = rep(1, length(levels(TrnG),TstX = NULL, var.equal = FALSE)if ( is.factor(TrnG) = FALSE)mx - nrow(TrnX); mg - nrow(TrnG)TrnX - rbind(TrnX, TrnG)TrnG - factor(rep(1:

42、2, c(mx, mg)if (is.null(TstX) = TRUE) TstX - TrnXif (is.vector(TstX) = TRUE) TstX - t(as.matrix(TstX)else if (is.matrix(TstX) != TRUE)TstX - as.matrix(TstX) if (is.matrix(TrnX) != TRUE) TrnX - as.matrix(TrnX)nx - nrow(TstX)blong - matrix(rep(0, nx), nrow=1,dimnames=list(blong, 1:nx)g - length(levels

43、(TrnG)mu - matrix(0, nrow=g, ncol=ncol(TrnX) 73 贝叶斯分类for (i in 1:g)mui, - colMeans(TrnXTrnG=i,)D - matrix(0, nrow=g, ncol=nx)if (var.equal = TRUE | var.equal = T)for (i in 1:g)d2 - mahalanobis(TstX, mui, var(TrnX)Di, - d2 - 2*log(pi)elsefor (i in 1:g)S - var(TrnXTrnG=i,) d2 - mahalanobis(TstX, mui,

44、S)Di, - d2 - 2*log(pi)-log(det(S)for ( j in 1:nx)dmin - Inffor (i in 1:g)if (Di,j dmin)dmin - Di,j; blong j - iblong 74 贝叶斯分类shock2=shockshock2$SURVIVE=as.numeric(shock2$SURVIVE)shock2$SEX=as.numeric(shock2$SEX)shock2$RECORD=as.numeric(shock2$RECORD)distinguish.bayes(shock2,-c(1,6),shock2$SHOCK_TYP)

45、#将因子数据转化为0 1变量shock2=shock,-c(which(names(shock)=SHOCK_TYP),which(names(shock)=SURVIVE),which(names(shock)=SEX),which(names(shock)=RECORD)shock3=cbind(shock2,sex=as.numeric(sex,1),survive=as.numeric(survive,1),record=as.numeric(record,1) 75 决策树library(rpart) #调用rpart 包rt.type - rpart(SHOCK_TYP .,dat

46、a= shock-dd1,-1)rt.type 76 决策树 77 决策树printcp(rt.type) #显示回归树rt.type 每一步得出的sub-trees 的详细信息 78 决策树#五折交叉验证train=c();test=c();for(i in 1:5)rt.type - rpart(SHOCK_TYP .,data= shock-ddi,)c1=t(table(predict(rt.type,shock-ddi,type=class),shock-ddi,6)c2=t(table(predict(rt.type,shockddi,type=class),shockddi,6)

47、train=c(train,sum(diag(c1)/sum(c1)test=c(test,sum(diag(c2)/sum(c2)train;mean(train) test;mean(test) 79 最邻近算法 80 #五折交叉验证,对k=1:15做循环final.test=c();final.mean=c()for( j in 1:15)test=c();for(i in 1:5)knn1lm-kknn(SHOCK_TYP.,shock-ddi,shockddi,k=j,distance =1,kernel = rectangular)c=table(shockddi,6, knn1l

48、m$fitted.values)test=c(test,sum(diag(c)/sum(c)final.test=cbind(final.test,test)final.mean=c(final.mean,mean(test) final.mean;max(final.mean) 最邻近算法 81 boostinglibrary(adabag)a=boosting(SHOCK_TYP.,data=shock-dd1,mfinal=15)aa.pred - predict.boosting(a,newdata=shock-dd1,) ;a.pred 82 boostingbarplot(a$im

49、portance) 83 boosting 84 train=c();test=c();importance=c();for(i in 1:5)a=boosting(SHOCK_TYP.,data=shock-ddi,mfinal=15)a.pred - predict.boosting(a,newdata=shock-ddi,) a.predt - predict.boosting(a,newdata=shockddi,)train=c(train,1-a.pred$error)test=c(test,1-a.predt$error)importance=cbind(importance,n

50、ames(a$importance)sort(a$importance,decreasing=T,index.return=T)$ix1:5)train;mean(train)test;mean(test) importance boosting 85 bagging 86 library(adabag)train=c();test=c();importance=c();for(i in 1:5)a=bagging(SHOCK_TYP.,data=shock-ddi,mfinal=15)a.pred - predict.bagging(a,newdata=shock-ddi,) a.predt

51、 - predict.bagging(a,newdata=shockddi,)train=c(train,1-a.pred$error)test=c(test,1-a.predt$error)importance=cbind(importance,names(a$importance)sort(a$importance,decreasing=T,index.return=T)$ix1:5)train;mean(train) test;mean(test)importance bagging 87 随机森林 88 library(randomForest)w=randomForest(SHOCK

52、_TYP., data=shock-dd1, importance=TRUE,proximity=TRUE)barplot(w$importance)par(mfrow=c(2,1)barplot(t(importance(w)7,cex.names = 0.6,main=MeanDecreaseAccuracy)barplot(t(importance(w)8,cex.names = 0.6,main=MeanDecreaseGini ) 随机森林 89 随机森林 90 print(w) 随机森林 91 #五折交叉验证train=c();test=c();for(i in 1:5)w=ran

53、domForest(SHOCK_TYP., data=shock-ddi, importance=TRUE,proximity=TRUE)c1=t(table(predict(w),shock-ddi,6)c2=t(table(predict(w,shockddi,),shockddi,6)train=c(train,sum(diag(c1)/sum(c1)test=c(test,sum(diag(c2)/sum(c2)train;mean(train)test;mean(test) 随机森林 92 神经网络(nnet)#实验法找最优节点,最后选取隐结点数为23左右为最优设计train=c()

54、;test=c();for (i in 5:30)a=nnet(shock-dd1,-6, b-dd1, size = i, rang = 0.1,decay = 5e-4, maxit = 200); c1=test.cl(b-dd1, predict(a, shock-dd1,-6)c2=test.cl(bdd1, predict(a, shockdd1,-6)train=c(train,sum(diag(c1)/sum(c1)test=c(test,sum(diag(c2)/sum(c2) result=data.frame(size=5:30,train,test) 93 神经网络(n

55、net)#五折交叉验证train=c();test=c();for(i in 1:5)a=nnet(shock-ddi,-6, b-ddi, size = 23, rang = 0.1,decay = 5e-4, maxit = 200); c1=test.cl(b-ddi, predict(a, shock-ddi,-6)c2=test.cl(bddi, predict(a, shockddi,-6)train=c(train,sum(diag(c1)/sum(c1)test=c(test,sum(diag(c2)/sum(c2) train;mean(train)test;mean(tes

56、t) 94 神经网络(nnet) 95注:左图为size=23、25、27的实验情形,推断size=27出现过拟合现象,同时实验结果较为不稳定 支持向量机#五折交叉验证library(e1071)train=c();test=c()for(i in 1:5)model - svm(SHOCK_TYP ., data = shock-ddi,kernal=sigmoid)pred.train - fitted(model)r1=table(pred.train, shock$SHOCK_TYP-ddi)pred.test - predict(model, shockddi,-6)r2=table

57、(pred.test, shock$SHOCK_TYPddi)train=c(train,sum(diag(r1)/sum(r1)test=c(test,sum(diag(r2)/sum(r2) train;mean(train)test;mean(test) 96 支持向量机( e1071 ) 97 总结 98 方法 准确率训练集 测试集决策树 0.6084 0.3360最邻近算法 无 0.4424Boosting 0.7235 0.4240Bagging 0.7102 0.4154随机森林 0.5321 0.5441神经网络(size=25) 0.4414 0.3275支持向量机 0.6682 0.4335 99

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!