R中的代码如下:问题在于生成的树TreeFit还没有用于预测,在printcp(TreeFit)的输出中却显示根结点的错误率为0.45,这个0.45是怎么来的? 假设是它自已内部于对生成树的观测预测的结果,那实现上我用它对观测进行预测,通过混淆矩阵的计算
误判率却是0.283,这又做何解释?请专业人员进行指点指点,万谢!
MailShot<-read.table(file="邮件营销数据.txt",header=TRUE) # 300 obs. of 10 variables
MailShot<-MailShot[,-1] # 去掉首列
Ctl<-rpart.control(minsplit=20,maxcompete=4,maxdepth=30,cp=0.01,xval=10)#预、后剪枝参数采用默认设置
set.seed(12345)
TreeFit<-rpart(MAILSHOT~.,data=MailShot,method="class",parms=list(split="gini"),control = Ctl)#生成树
printcp(TreeFit) #输出结果如黄色部分:
Classification tree:
rpart(formula = MAILSHOT ~ ., data = MailShot, method = "class",
parms = list(split = "gini"), control = Ctl)
Variables actually used in tree construction:
[1] AGE CAR GENDER INCOME REGION
Root node error: 135/300 = 0.45
n= 300
CP nsplit rel error xerror xstd
1 0.214815 0 1.00000 1.00000 0.063828
2 0.025926 1 0.78519 0.88148 0.062765
3 0.018519 3 0.73333 0.97037 0.063633
4 0.014815 5 0.69630 0.98519 0.063737
5 0.012346 7 0.66667 1.02222 0.063944
6 0.010000 10 0.62963 1.01481 0.063909
CFit1<-predict(TreeFit,MailShot,type="class") #用生成的树对参与建树的观测进行预测
ConfM1<-table(MailShot$MAILSHOT,CFit1) # 计算单个分类树的混淆矩阵
(E1<-(sum(ConfM1)-sum(diag(ConfM1)))/sum(ConfM1)) # 计算单个树的错判率
#误判率为0.2833333 用全部观测构造的树对全体观测的分类错判率


雷达卡




京公网安备 11010802022788号







