决策树

1|—— rpart函数 shuttle数据集

数据集:

 分类问题:
      stability  error sign  wind     magn      vis     use
1       xstab    LX    pp    head    Light      no     auto
2       xstab    LX    pp    head    Medium     no     auto
3       xstab    LX    pp    head    Strong     no     auto
4       xstab    LX    pp    tail     Light     no     auto
...
256

代码:

1 library(MASS)
2 shuttle#加载shuttle数据集
3 m=256;set.seed(2)
4 
5 samp = sample(1:m,floor(m/10))#测试样本
6 tsamp = setdiff(1:m,samp) #训练样本

绘图:

1 library(rpart.plot)
2 (b=rpart(use~.,shuttle,subset=tsamp))#数据加入模型
3 plot(b);text(b,use.n=T)
4 rpart.plot(b,type=2)#另一种绘图方式

     rpart.plot(b,type=1)               rpart.plot(b,type=2)              

       

          分类的效果还是不错的,but这是数据洗的好啊...

 

1 #预测
2 predict(b, shuttle[samp,],type="prob")   # 返回每个样本被预测为各类别的概率
3 predict(b, shuttle[samp,],type="vector") # 以各类别的水平值显示各样本的预测结果
4 predict(b, shuttle[samp,],type="class")  # 以各类别名称显示各样本的预测结果
5 predict(b, shuttle[samp,],type="matrix") # 以矩阵形式综合输出"以类别水平值表示的预测结果"、"类别频率"、"预测概率"

 

outcome:

 1       [,1] [,2]   [,3]       [,4]            [,5]          [,6]
 2 48     1    115    0     1.00000000       0.0000000   0.49783550
 3 180    2    4     82     0.04651163       0.9534884   0.37229437
 4 146    2    4     82     0.04651163       0.9534884   0.37229437
 5 43     1  115     0      1.00000000       0.0000000   0.49783550
 6 238    2    4     82     0.04651163     0.9534884   0.37229437
 7 237    2    0     14     0.00000000      1.0000000   0.06060606
 8 33     1  115     0      1.00000000     0.0000000   0.49783550
 9 208    2    4     82     0.04651163     0.9534884   0.37229437
10 117    1  115     0      1.00000000       0.0000000   0.49783550
11 136    2    4     82     0.04651163       0.9534884   0.37229437
12 247    2    4     82     0.04651163       0.9534884   0.37229437
13 59     1  115     0      1.00000000       0.0000000   0.49783550
14 ...

 

 

t(table(predict(b,shuttle[tsamp,],type="class"),shuttle[tsamp,7])) # 对tsamp进行样本内预测,并输出混淆矩阵;t()为转置函数,可以不用
t(table(predict(b,shuttle[samp,],type="class"),shuttle[samp,7])) # 对samp进行样本外预测,并输出混淆矩阵;

 

OUTCOME:

     _ tsamp集合                _samp集合

 

  

 

posted @ 2016-06-27 15:52  叶乙  阅读(273)  评论(0编辑  收藏  举报