R数据挖掘实例_第1页
R数据挖掘实例_第2页
R数据挖掘实例_第3页
R数据挖掘实例_第4页
R数据挖掘实例_第5页
已阅读5页,还剩250页未读 继续免费阅读

下载本文档

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

文档简介

Crime&Shock数据集分析展示

探索性数据分析CommunitiesandCrime

Unnormalized

DataSet

(Datasource)2一、数据预处理#导入crime数据,修改变量名称,并查看数据属性crim=read.table("crim.txt",sep=",",na.string="?")name=read.table("attr_vol.txt")name=name[,2]colnames(crim)<-namesummary(crim)dim(crim)观测值:2215变量数:147部分数据严重缺失3四、犯罪率分布情况在3月份的行业销售旺季,东北地区及北部地区销售额占到公司全月总额的70%,西部地区仅为10%,西部死去市场潜力还需深度挖掘。可看出violentPerPopnonViolPerPop都出现了不同程度的拖尾特征,考虑对数据进行对数变换由图可知4四、对数化变换做变换后两变量数据较为对称由图可知5四、犯罪率地区差异三个地区犯罪率的中位数由西向东递减,分布相对集中,但东部地区出现了较为明显的离群值6缺失值处理nrow(crim[!complete.cases(crim),])##缺失值项的总行数#基本每行都有缺失值na.sta=c()for(iin1:2215){na.sta=c(na.sta,length(which(is.na(crim[i,]))))}max(na.sta)#缺失值基本在20左右,没有#缺失过于严重的样本,无需删除7缺失值处理:临近值插补从数据集中选取若干条其他属性和它相似的样本(即和它在空间欧式距离最短的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个样品的空间距离8缺失值处理:临近值插补#先处理非因子型变量的缺失值,需要将以下步骤进行两次for(rinwhich(!complete.cases(crim1)))crim1[r,which(is.na(crim1[r,]))]<-apply(data.frame(crim1[c(eger(names(sort(dist.mtx[r,])[2:20]))),which(is.na(crim1[r,]))]),2,median,na.rm=T)#再处理因子型变量的for(rin1:2215){if(is.na(gangUnit[r])){index=sort(dist.mtx[r,],index.return=T)$ixif(all(is.na(gangUnit[index[2:20]])))gangUnit[r]=gangUnit[intersect(index,which(is.na(gangUnit)==F))][1]else{gangUnit[r]=levels(gangUnit[index[2:11]])[which.max(table(gangUnit[index[2:11]]))]}}}crim2=data.frame(cbind(crim[,1:5],crim1[,1:126],gangUnit,crim1[,-(1:126)]))9Crossvalidation#设置五折交叉验证n=2215;zz1=1:n#zz1为所有观测值(行)的下标zz2=rep(1:5,ceiling(n/5))[1:n]set.seed(200);zz2=sample(zz2,n)#zz2为1:5的随机排列zz2[1:100]#dd保存每一折下标,令testset选其中之一,则共可做五次交叉验证dd=list()for(iin1:5)dd[[i]]=zz1[zz2==i]dd10Modelbuilding

——traditionalmethods

11LinearRegressioncrim.test=crim1[dd[[1]],]crim.train=crim1[-dd[[1]],]lm.vio=lm(violentPerPop~.,data=crim.train[,c(6:129,146)])summary(lm.vio)#对因变量做对数变换lm.logvio=lm(log(violentPerPop)~.,data=crim.train[,c(6:129,146)])summary(lm.logvio)shapiro.test(lm.vio$residuals)shapiro.test(lm.logvio$residuals)12LinearRegression结果显示对因变量做对数变换后并未使模型显著度明显增强。注:由于空间原因只显示未对数化处理模型的部分结果13LinearRegression:anova注:由于空间原因

只显示部分结果14LinearRegression:anovaav=anova(lm.vio)#显示回归中系数不显著的前十个变量名称names(crim[,6:129])[sort(av[,5],decreasing=T,index.return=T)$ix[1:20]]注:红线标注的为两个模型中都非常不显著变量(pvalue>0.7)15LinearRegressionfor(iin1:5){crim.test=data.frame(crim1[dd[[i]],])crim.train=data.frame(crim1[-dd[[i]],])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((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-pre.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)}16LinearRegression17Stepwise#逐步回归:全部、前向、后向lm1both<-step(lm.vio,direction="both")lm1forward<-step(lm.vio,direction="forward")lm1back<-step(lm.vio,direction="backward")final.lm<-step(lm.vio)summary(final.lm)18Stepwise19Stepwise20Stepwise:diagnose21Stepwise22Stepwise23Conclusion由结果可以看出,逐步回归调整后的的R-Square为0.6957,模型检验的结果显示,回归的残差项并不满足正态性假定,同时模型的AIC值25573.06依然过高,这启发我们建立更加精确的预测模型。24Ridge25Ridgecor(crim[,6:129],use="complete.obs")#变量间的相关性,计算时不考虑缺失值symnum(cor(crim[,6:129],use="complete.obs"))#简单明显示出变量间的相关#只截取部分结果显示,可以看出#变量之间的共线性较为明显26Ridgelibrary(MASS)ridgelm<-lm.ridge(violentPerPop~.,data=crim.train[,c(6:129,146)],lambda=seq(0,200,0.01),model=TRUE)names(ridgelm)ridgelm$lambda[which.min(ridgelm$GCV)]##找到GCV最小时对应的lambda##广义的交叉验证准则—GCV,越小越好ridgelm$coef[,which.min(ridgelm$GCV)]#找到GCV最小时对应的系数27Ridge#lamda同GCV之间关系的图形plot(ridgelm$lambda,ridgelm$GCV,type="l")abline(v=ridgelm$lambda[which.min(ridgelm$GCV)],col="green")28LassoLASSO方法在线性模型中,人们必须选择合适的变量;比如常用的逐步回归法就是选择显著的变量而抛弃那些不显著的。Tibshirani(1996)[1]提出了一个新的方法来处理变量选择的问题。该方法在模型系数绝对值的和小于某常数的条件下,谋求残差平方和最小。该方法既提供了如子集选择方法那样的可以解释的模型,也具有岭回归那样的稳定性。它不删除变量,但使得一些回归系数收缩、变小,甚至为0。因而,该方法被称为lasso(leastabsoluteshrinkageandselectionoperator,最小绝对值收缩和选择算子[2])。

29Lasso#将数据集中的因子变量gangUnit转换为哑元变量#训练集gangUnit5=rep(0,1772);gangUnit5[which(crim.train$gangUnit==5)]=1gangUnit10=rep(0,1772);gangUnit10[which(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);gangUnit5[which(crim.test$gangUnit==5)]=1gangUnit10=rep(0,443);gangUnit10[which(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)])30Lasso(lars)library(lars)attach(crim.train)lassolm<-lars(as.matrix(crim.train2),violentPerPop)Lassolm31Lasso(msgps)library(msgps)fit<-msgps(as.matrix(crim.train2),crim.train$violentPerPop)summary(fit)32Lasso(lars)lassolm$Cp33Lasso(msgps)coef(fit)#extractcoefficientsattselectedbymodelselectioncriteriacbind(coef(fit),ridgelm$coef[,which.min(ridgelm$GCV)])[1:10,])注:如图,根据前三个准则得出的最终模型系数基本一致,最后一列为岭回归Cp原则的系数,可以看出lasso方法可以使更多的系数“收缩”到0。34Lasso(msgps)plot(fit,criterion="cp",main="lasso")35Lasso(lars)36Lasso(lars)predict11<-predict(lassolm,data.matrix(crim.train2),mode="fraction",s=best,type="fit")predict1<-predict(lassolm,data.matrix(crim.test2),mode="fraction",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(crim.test$violentPerPop)-crim.test$violentPerPop)^2),"\n")lasso测试集上的NMSE为:0.3388574(依据—10折交叉验证)37Lasso(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.train$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测试集上的NMSE为:0.3352093(依据—Cp准则)38Lasso##下面我们来看看上面(根据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

可以看出上述模型的残差项仍然不满足正态性的分布假定,虽然达到了较好的预测精度,但是我们的模型还需要进一步改进39Ridge&Lasso实际上,岭回归和lasso方法都是用于处理模型变量共线性的方式。在传统线性回归当中,变量共线性极有可能导致估计的回归系数的不稳定(这一特性在样本总量较少而变量总数较多的情形下尤其显著),这一缺点可以通过对回归系数加以约束得到改善。不妨设约束函数为如下形式,则岭回归和lasso回归可以在参数族的形式下得到统一(岭回归:r=2;lasso:r=1)

虽然只是参数取法上的不一致,但由于约束函数凹凸函数不同的特性(r<1为凹函数,r>1为凸函数)导致了最终系数特点的不一致。对于岭回归,随着t的减小,模型系数绝对值一般“步调一致”的收缩;对于lasso回归,则更倾向于将部分变量的系数收敛到0而保持另外一些变量系数的大小来达到约束条件(这实际上增加了最终系数的差异)

对于r取值的其他情形而导致的后果也可由函数凹凸性作相似推断。具体参见FastSparseRegressionandClassificationJeromeH.Friedman200840Ridge&Lasso这一参数族中r的选取也带来很多问题,对于r>1,最终系数不易收缩到0,这不助于变量的筛选;而对于r<1,随着t的减小(可以一一对应到拉格朗日方法中的λ)其系数变化呈现不连续的特征,这一问题可以通过加入“弹性系数”的方式(Generalizedelasticnet)得以改进(在一定的参数取值条件下)。41Generalizedelasticnet

msgps这一软件包给我们提供了解决方案。根据Friedman论文中结论,在enet方法中,当α在(0,1)中时,其得到的系数变化较为连续(α=0对应lasso方法)

;而在genet方法中α>1/2时也能得到同样的效果。这一方法提高了原系数估计的稳定性。42Generalizedelasticnet#elasticnetfit2<-msgps(as.matrix(crim.train2),crim.train$violentPerPop,penalty="enet",alpha=0.5)summary(fit2)coef(fit2)plot(fit2,criterion="cp")43Generalizedelasticnet44Generalizedelasticnet#根据Cp原则NMSE.train=c()NMSE.test=c()for(iin1:5){crim.test=crim1[dd[[i]],]crim.train=crim1[-dd[[i]],]#训练集gangUnit5=rep(0,1772);gangUnit5[which(crim.train$gangUnit==5)]=1gangUnit10=rep(0,1772);gangUnit10[which(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);gangUnit5[which(crim.test$gangUnit==5)]=1gangUnit10=rep(0,443);gangUnit10[which(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)])45Generalizedelasticnetfit<-msgps(as.matrix(crim.train2),crim.train$violentPerPop,penalty="enet",alpha=0.5)#训练集predict11<-predict(fit,as.matrix(crim.train2))[,1]NMSE.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))[,1]NMSE.test=c(NMSE.test,mean((crim.test$violentPerPop-as.numeric(predict1))^2)/mean((mean(crim.test$violentPerPop)-crim.test$violentPerPop)^2))}NMSE.train;mean(NMSE.train)NMSE.test;mean(NMSE.test)46Generalizedelasticnetpenalty=“genet”(penalty=“alasso”时计算出现奇异值系统报错)47Modelbuilding

——DataMining48K临近回归library(kknn)NMSE=c()MSE=c()for(iin1:5){crim.test=crim1[dd[[i]],]crim.train=crim1[-dd[[i]],]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)}虽然该算法主要用于分类。不用于拟合模型,但其较为稳定,可先利用该模型观察拟合效果以及预测精度再试图从不稳定模型中得到提升。49K临近回归最终达到的预测精度如下,可见该方法的预测精度仍然较低:50回归树library(rpart)##调用rpart包crim.test=data.frame(crim1[dd[[1]],])crim.train=data.frame(crim1[-dd[[1]],])rt.train=rpart(violentPerPop~.,data=crim.train[,c(6:129,146)])plot(rt.train,uniform=T,branch=1,margin=0.1,cex=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.train[,c(6:129,146)]$violentPerPop)-crim.train[,c(6:129,146)]$violentPerPop)^2),"\n")#tree训练集上的NMSE为:0.3664984treepre.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)-crim.test[,c(6:129,146)]$violentPerPop)^2),"\n")#tree测试集上的NMSE为:0.482897253回归树:五折交叉验证for(iin1:5){crim.test=data.frame(crim1[dd[[i]],])crim.train=data.frame(crim1[-dd[[i]],])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,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-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.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test)}54回归树55Boosting(mboost)for(iin1:5){crim.test=data.frame(crim1[dd[[i]],])crim.train=data.frame(crim1[-dd[[i]],])boost.train=blackboost(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$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-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.train=c(MSE.train,M.train)MSE.test=c(MSE.test,M.test)}}56Boosting57BaggingBagging是Breiman提出的与Boosting相似的技术。Bagging技术的主要思想是给定一弱学习算法和一训练集11(,),...,(,)nnxyxy。让该学习算法训练多轮,每轮的训练集由从初始的训练集中随机取出的n个训练例组成,初始训练例在某轮训练集中可以出现多次或根本不出现。训练之后可得到一个预测函数序列:1,...,thh,最终的预测函数H对分类问题采用投票方式,对回归问题采用简单平均方法对新示例进行判别。Bagging与Boosting的区别在于Bagging的训练集的选择是随机的,各轮训练集之间相互独立,而Boosting的训练集的选择不是独立的,各轮训练集的选择与前面各轮的学习结果有关;Bagging的各个预测函数没有权重,而Boosting是有权重的;Bagging的各个预测函数可以并行生成,而Boosting的各个预测函数只能顺序生成。对于象神经网络这样极为耗时的学习方法,Bagging可通过并行训练节省大量时间开销。以下我将通过R语言中的ipred包运用Bagging算法对该数据集进行分析研究。58Bagging(ipred)for(iin1:5){crim.test=data.frame(crim1[dd[[i]],])crim.train=data.frame(crim1[-dd[[i]],])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.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-pre.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)}59Bagging60随机森林(randomForest)randomforest.violentPerPop<-randomForest(violentPerPop~.,data=crim.train[,c(6:129,146)],ntree=500,importance=TRUE,proximity=TRUE)randomforest.violentPerPop$importance##查看解释变量对模型的贡献性的大小randomforest.violentPerPop$importanceSD61随机森林(randomForest)#贡献度最大的前十个变量names(crim.train[,c(6:129,146)])[sort(randomforest.violentPerPop$importance[,1],decreasing=T,index.return=T)$ix[1:10]]plot(randomforest.violentPerPop$importanceSD)identify(1:124,randomforest.violentPerPop$importanceSD,labels=names(randomforest.violentPerPop$importanceSD))62随机森林(randomForest)63随机森林(randomForest)64总结方法NMSE训练集测试集传统统计方法线性回归0.29000.3729逐步回归0.29640.3774lasso0.30510.3389Generalizedelasticnet0.29380.3677数据挖掘K临近回归无0.6257回归树0.35290.4627Boosting0.27530.3496Bagging0.26950.3589随机森林0.32580.322865ShockData

(Datasource)66数据预处理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)67数据描述68数据描述69数据描述70数据描述Record不同时的shocktype完全相同71数据描述由图可知Record不同时各观测值有差异但不明显,由箱盒图可以看到HT与RCI中存在离群值72贝叶斯分类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:2,c(mx,mg)))}if(is.null(TstX)==TRUE)TstX<-TrnXif(is.vector(TstX)==TRUE)TstX<-t(as.matrix(TstX))elseif(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(TrnG))mu<-matrix(0,nrow=g,ncol=ncol(TrnX))73贝叶斯分类for(iin1:g)mu[i,]<-colMeans(TrnX[TrnG==i,])D<-matrix(0,nrow=g,ncol=nx)if(var.equal==TRUE||var.equal==T){for(iin1:g){d2<-mahalanobis(TstX,mu[i,],var(TrnX))D[i,]<-d2-2*log(p[i])}}else{for(iin1:g){S<-var(TrnX[TrnG==i,])d2<-mahalanobis(TstX,mu[i,],S)D[i,]<-d2-2*log(p[i])-log(det(S))}}for(jin1:nx){dmin<-Inffor(iin1:g)if(D[i,j]<dmin){dmin<-D[i,j];blong[j]<-i}}blong}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)#将因子数据转化为01变量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~.,data=shock[-dd[[1]],-1])rt.type76决策树77决策树printcp(rt.type)##显示回归树rt.type每一步得出的sub-trees的详细信息78决策树#五折交叉验证train=c();test=c();for(iin1:5){rt.type<-rpart(SHOCK_TYP~.,data=shock[-dd[[i]],])c1=t(table(predict(rt.type,shock[-dd[[i]],],type="class"),shock[-dd[[i]],6]))c2=t(table(predict(rt.type,shock[dd[[i]],],type="class"),shock[dd[[i]],6]))train=c(train,sum(diag(c1))/sum(c1))test=c(test,sum(diag(c2))/sum(c2))}train;mean(train)test;mean(test)79最邻近算法#五折交叉验证,对k=1:15做循环final.test=c();final.mean=c()for(jin1:15){test=c();for(iin1:5){knn1lm<-kknn(SHOCK_TYP~.,shock[-dd[[i]],],shock[dd[[i]],],k=j,distance=1,kernel="rectangular")c=table(shock[dd[[i]],6],knn1lm$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)80最邻近算法81boostinglibrary(adabag)a=boosting(SHOCK_TYP~.,data=shock[-dd[[1]],],mfinal=15)aa.pred<-predict.boosting(a,newdata=shock[-dd[[1]],]);a.pred82boostingbarplot(a$importance)83boostingtrain=c();test=c();importance=c();for(iin1:5){a=boosting(SHOCK_TYP~.,data=shock[-dd[[i]],],mfinal=15)a.pred<-predict.boosting(a,newdata=shock[-dd[[i]],])a.predt<-predict.boosting(a,newdata=shock[dd[[i]],])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)$ix[1:5]])}train;mean(train)test;mean(test)importance84boosting85bagginglibrary(adabag)train=c();test=c();importance=c();for(iin1:5){a=bagging(SHOCK_TYP~.,data=shock[-dd[[i]],],mfinal=15)a.pred<-predict.bagging(a,newdata=shock[-dd[[i]],])a.predt<-predict.bagging(a,newdata=shock[dd[[i]],])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)$ix[1:5]])}train;mean(train)test;mean(test)importance86bagging87随机森林library(randomForest)w=randomForest(SHOCK_TYP~.,data=shock[-dd[[1]],],importance=TRUE,proximity=TRUE)barplot(w$importance)par(mfrow=c(2,1))barplot(t(importance(w))[7,],s=0.6,main="MeanDecreaseAccuracy")barplot(t(importance(w))[8,],s=0.6,main="MeanDecreaseGini")88随机森林89随机森林print(w)90随机森林#五折交叉验证train=c();test=c();for(iin1:5){w=randomForest(SHOCK_TYP~.,data=shock[-dd[[i]],],importance=TRUE,proximity=TRUE)c1=t(table(predict(w),shock[-dd[[i]],6]))c2=t(table(predict(w,shock[dd[[i]],]),shock[dd[[i]],6]))train=c(train,sum(diag(c1))/sum(c1))test=c(test,sum(diag(c2))/sum(c2))}train;mean(train)test;mean(test)91随机森林92神经网络(nnet)#实验法找最优节点,最后选取隐结点数为23左右为最优设计train=c();test=c();for(iin5:30){a=nnet(shock[-dd[[1]],-6],b[-dd[[1]],],size=i,rang=0.1,decay=5e-4,maxit=200);c1=test.cl(b[-dd[[1]],],predict(a,shock[-dd[[1]],-6]))c2=test.cl(b[dd[[1]],],predict(a,shock[dd[[1]],-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神经网络(nnet)#五折交叉验证train=c();test=c();for(iin1:5){a=nnet(shock[-dd[[i]],-6],b[-dd[[i]],],size=23,rang=0.1,decay=5e-4,maxit=200);c1=test.cl(b[-dd[[i]],],predict(a,shock[-dd[[i]],-6]))c2=test.cl(b[dd[[i]],],predict(a,shock[dd[[i]],-6]))train=c(train,sum(diag(c1))/sum(c1))test=c(test,sum(diag(c2))/sum(c2))}train;mean(train)test;mean(test)94神经网络(nnet)注:左图为size=23、25、27的实验情形,推断size=27出现过拟合现象,同时实验结果较为不稳定95支持向量机#五折交叉验证library(e1071)train=c();test=c()for(iin1:5){model<-svm(SHOCK_TYP~.,data=shock[-dd[[i]],],kernal="sigmoid")pred.train<-fitted(model)r1=table(pred.train,shock$SHOCK_TYP[-dd[[i]]])pred.test<-predict(model,shock[dd[[i]],-6])r2=table(pred.test,shock$SHOCK_TYP[dd[[i]]])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总结方法准确率训练集测试集决策树0.60840.3360最邻近算法无0.4424Boosting0.72350.4240Bagging0.71020.4154随机森林0.53210.5441神经网络(size=25)0.44140.3275支持向量机0.66820.433598Thanks99安全阀基本知识如果压力容器(设备/管线等)压力超过设计压力…1.尽可能避免超压现象堵塞(BLOCKED)火灾(FIRE)热泄放(THERMALRELIEF)如何避免事故的发生?2.使用安全泄压设施爆破片安全阀如何避免事故的发生?01安全阀的作用就是过压保护!一切有过压可能的设施都需要安全阀的保护!这里的压力可以在200KG以上,也可以在1KG以下!设定压力(setpressure)安全阀起跳压力背压(backpressure)安全阀出口压力超压(overpressure)表示安全阀开启后至全开期间入口积聚的压力.几个压力概念弹簧式先导式重力板式先导+重力板典型应用电站锅炉典型应用长输管线典型应用罐区安全阀的主要类型02不同类型安全阀的优缺点结构简单,可靠性高适用范围广价格经济对介质不过分挑剔弹簧式安全阀的优点预漏--由于阀座密封力随介质压力的升高而降低,所以会有预漏现象--在未达到安全阀设定点前,就有少量介质泄出.100%SEATINGFORCE75502505075100%SETPRESSURE弹簧式安全阀的缺点过大的入口压力降会造成阀门的频跳,缩短阀门使用寿命.ChatterDiscGuideDiscHolderNozzle弹簧式安全阀的缺点弹簧式安全阀的缺点=10090807060500102030405010%OVERPRESSURE%BUILT-UPBACKPRESSURE%RATEDCAPACITY普通产品平衡背压能力差.在普通产品基础上加装波纹管,使其平衡背压的能力有所增强.能够使阀芯内件与高温/腐蚀性介质相隔离.平衡波纹管弹簧式安全阀的优点优异的阀座密封性能,阀座密封力随介质操作压力的升高而升高,可使系统在较高运行压力下高效能地工作.ResilientSeatP1P1P2先导式安全阀的优点平衡背压能力优秀有突开型/调节型两种动作特性可远传取压先导式安全阀的优点对介质比较挑剃,不适用于较脏/较粘稠的介质,此类介质会堵塞引压管及导阀内腔.成本较高.先导式安全阀的缺点重力板式产品的优点目前低压储罐呼吸阀/紧急泄放阀的主力产品.结构简单.价格经济.重力板式产品的缺点不可现场调节设定值.阀座密封性差,并有较严重的预漏.受背压影响大.需要很高的超压以达到全开.不适用于深冷/粘稠工况.几个常用规范ASMEsectionI-动力锅炉(FiredVessel)ASMEsectionVIII-非受火容器(UnfiredVessel)API2000-低压安全阀设计(LowpressurePRV)API520-火灾工况计算与选型(FireSizing)API526-阀门尺寸(ValveDimension)API527-阀座密封(SeatTightness)介质状态(气/液/气液双相).气态介质的分子量&Cp/Cv值.液态介质的比重/黏度.安全阀泄放量要求.设定压力.背压.泄放温度安全阀不以连接尺寸作为选型报价依据!如何提供高质量的询价?弹簧安全阀的结构弹簧安全阀起跳曲线弹簧安全阀结构弹簧安全阀结构导压管活塞密封活塞导向不平衡移动副(活塞)导管导阀弹性阀座P1P1P2先导式安全阀结构先导式安全阀的工作原理频跳安全阀的频跳是一种阀门高频反复开启关闭的现象。安全阀频跳时,一般来说密封面只打开其全启高度的几分只一或十几分之一,然后迅速回座并再次起跳。频跳时,阀瓣和喷嘴的密封面不断高频撞击会造成密封面的严重损伤。如果频跳现象进一步加剧还有可能造成阀体内部其他部分甚至系统的损伤。安全阀工作不正常的因素频跳后果1、导向平面由于反复高频磨擦造成表面划伤或局部材料疲劳实效。2、密封面由于高频碰撞造成损伤。3、由于高频振颤造成弹簧实效。4、由频跳所带来的阀门及管道振颤可能会破坏焊接材料和系统上其他设备。5、由于安全阀在频跳时无法达到需要的排放量,系统压力有可能继续升压并超过最大允许工作压力。安全阀工作不正常的因素A、系统压力在通过阀门与系统之间的连接管时压力下降超过3%。当阀门处于关闭状态时,阀门入口处的压力是相对稳定的。阀门入口压力与系统压力相同。当系统压力达到安全阀的起跳压力时,阀门迅速打开并开始泄压。但是由于阀门与系统之间的连接管设计不当,造成连接管内局部压力下降过快超过3%,是阀门入口处压力迅速下降到回座压力而导致阀门关闭。因此安全阀开启后没有达到完全排放,系统压力仍然很高,所以阀门会再次起跳并重复上述过程,既发生频跳。导致频跳的原因导致接管压降高于3%的原因1、阀门与系统间的连接管内径小于阀门入口管内径。2、存在严重的涡流现象。3、连接管过长而且没有作相应的补偿(使用内径较大的管道)。4、连接管过于复杂(拐弯过多甚至在该管上开口用作它途。在一般情况下安全阀入口处不允许安装其他阀门。)导致频跳的原因B、阀门的调节环位置设置不当。安全阀拥有喷嘴环和导向环。这两个环的位置直接影响安全阀的起跳和回座过程。如果喷嘴环的位置过低或导向环的位置过高,则阀门起跳后介质的作用力无法在阀瓣座和调节环所构成的空间内产生足够的托举力使阀门保持排放状态,从而导致阀门迅速回座。但是系统压力仍然保持较高水平,因此回座后阀门会很快再次起跳。导致频跳的原因C、安全阀的额定排量远远大于所需排量。

由于所选的安全阀的喉径面积远远大于所需,安全阀排放时过大的排量导致压力容器内局部压力下降过快,而系统本身的超压状态没有得到缓解,使安全阀不得不再次起跳频跳的原因阀门拒跳:当系统压力达到安全阀的起跳压力时,阀门不起跳的现象。安全阀工作不正常的因素1、阀门整定压力过高。2、阀门内落入大量杂质从而使阀办座和导套间卡死或摩擦力过大。3、弹簧之间夹入杂物使弹簧无法被正常压缩。4、阀门安装不当,使阀门垂直度超过极限范围(正负两度)从而使阀杆组件在起跳过程中受阻。5、排气管道没有被可靠支撑或由于管道受热膨胀移位从而对阀体产生扭转力,导致阀体内机构发生偏心而卡死。安全阀拒跳的原因阀门不回座或回座比过大:安全阀正常起跳后长时间无法回座,阀门保持排放状态的现象。安全阀工作不正常的因素1、阀门上下调整环的位置设置不当。2、排气管道设计不当造成排气不畅,由于排气管道过小、拐弯过多或被堵塞,使排放的蒸汽无法迅速排出而在排气管和阀体内积累,这时背压会作用在阀门内部机构上并产生抑制阀门关闭的趋势。3、阀门内落入大量杂质从而使阀瓣座和导套之间卡死后摩擦力过大。安全阀不回座或回座比过大的因素:4、弹簧之间夹入杂物从而使弹簧被正常压缩后无法恢复。5、由于对阀门排放时的排放反力计算不足,从而在排放时阀体受力扭曲损坏内部零件导致卡死。6、阀杆螺母(位于阀杆顶端)的定位销脱落。在阀门排放时由于振动使该螺母下滑使阀杆组件回落受阻。安全阀不回座或回座比过大的因素:7、由于弹簧压紧螺栓的锁紧螺母松脱,在阀门排放时由于振动时弹簧压紧螺栓松动上滑导致阀门的设定起跳值不断减小。

8、阀门安装不当,使阀门垂直度超过极限范围(正负两度)从而使阀杆组件在回落过程中受阻。

9、阀门的密封面中有杂质,造成阀门无法正常关闭。

10、锁紧螺母没有锁紧,由于管道震动下环向上运动,上平面高于密封面,阀门回座时无法密封安全阀不回座或回座比过大的因素:谢谢观看癌基因与抑癌基因oncogene&tumorsuppressorgene24135基因突变概述.癌基因和抗癌基因的概念.癌基因的分类.癌基因产物的作用.癌基因激活的机理主要内容疾病:

——是人体某一层面或各层面形态和功能(包括其物质基础——代谢)的异常,归根结底是某些特定蛋白质结构或功能的变异,而这些蛋白质又是细胞核中相应基因借助细胞受体和细胞中信号转导分子接收信号后作出应答(表达)的产物。TranscriptionTranslationReplicationDNARNAProtein中心法规Whatisgene?基因:

—是遗传信息的载体

—是一段特定的DNA序列(片段)

—是编码RNA或蛋白质的一段DNA片段

—是由编码序列和调控序列组成的一段DNA片段基因主宰生物体的命运:微效基因的变异——生物体对生存环境的敏感度变化关键关键基因的变异——生物体疾病——死亡所以才有:“人类所有疾病均可视为基因病”之说注:如果外伤如烧伤、骨折等也算疾病的话,外伤应该无法归入基因病的行列。Genopathy问:两个不相干的人,如果他们患得同一疾病,致病基因是否相同?再问:同卵双生的孪生兄弟,他们患病的机会是否一样,命运是否相同?┯┯┯┯

ATGC

TACG

┷┷┷┷┯┯┯┯┯

ATAGC

TATCG

┷┷┷┷┷┯┯┯┯

ATGC

TACG

┷┷┷┷┯┯┯

AGC

TCG

┷┷┷┯┯┯┯

ACGC

TGCG

┷┷┷┷┯┯┯┯

ATGC

TACG

┷┷┷┷增添缺失替换DNA分子(复制)中发生碱基对的______、______

,而引起的

的改变。替换增添缺失基因结构基因变异的概念:英语句子中的一个字母的改变,可能导致句子的意思发生怎样的变化?可能导致句子的意思不变、变化不大或完全改变THECATSATONTHEMATTHECATSITONTHEMATTHEHATSATONTHEMATTHECATONTHEMAT同理:替换、增添、缺失碱基对,可能会使性状不变、变化不大或完全改变。基因的结构改变,一定会引起性状的改变??原句:1.基因多态性与致病突变基因变异与疾病的关系2.单基因病、多基因病3.疾病易感基因

基因多态性polymorphism是指DNA序列在群体中的变异性(差异性)在人群中的发生概率>1%(SNP&CNP)<1%的变异概率叫做突变基因多态性特定的基因多态性与疾病相关时,可用致病突变加以描述SNP:散在单个碱基的不同,单个碱基的缺失、插入和置换。

CNP:DNA片段拷贝数变异,包括缺失、插入和重复等。同义突变、错义突变、无义突变、移码突变

致病突变生殖细胞基因突变将突变的遗传信息传给下一代(代代相传),即遗传性疾病。体细胞基因突变局部形成突变细胞群(肿瘤)。受精卵分裂基因突变的原因物理因素化学因素生物因素基因突变的原因(诱发因素)紫外线、辐射等碱基类似物5BU/叠氮胸苷等病毒和某些细菌等自发突变DNA复制过程中碱基配对出现误差。UV使相邻的胸腺嘧啶产生胸腺嘧啶二聚体,DNA复制时二聚体对应链空缺,碱基随机添补发生突变。胸腺嘧啶二聚体胸腺嘧啶胸腺嘧啶紫外线诱变物理诱变(physicalinduction)

5溴尿嘧啶(5BU)与T类似,多为酮式构型。间期细胞用酮式5BU处理,5BU能插入DNA取代T与A配对;插入DNA后异构成烯醇式5BU与G配对。两次DNA复制后,使A/T转换成G/C,发生碱基转换,产生基因突变。化学诱变(chemicalinduction)碱基类似物(baseanalogues)诱变AT5-BUA5-BUAAT5-BU5-BU(烯醇式)

(酮式)GGC1.生物变异的根本来源,为生物进化提供了最初的原始材料,能使生物的性状出现差别,以适应不同的外界环境,是生物进化的重要因素之一。2.致病突变是导致人类遗传病的病变基础。基因突变的意义概述:肿瘤细胞恶性增殖特性(一)肿瘤细胞失去了生长调节的反馈抑制正常细胞受损,一旦恢复原状,细胞就会停止增殖,但是肿瘤细胞不受这一反馈机制抑制。(二)肿瘤细胞失去了细胞分裂的接触抑制。正常细胞体外培养,相邻细胞相接触,长在一起,细胞就会停止增殖,而肿瘤细胞生长满培养皿后,细胞可以重叠起生长。(三)肿瘤细胞表现出比正常细胞更低的营养要求。(四)肿瘤细胞生长有一种自分泌作用,自己分泌生长需

温馨提示

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

评论

0/150

提交评论