如何利用R软件建立决策树模型
1、根据Age、Number、Start三个变量对kyphosis进行分类。
#程序包
library(rpart)
library(rpart.plot)
library(rattle)
#数据
data(kyphosis)
head(kyphosis)
![](https://www.89179.net/other_image/aHR0cHM6Ly9wMy5kb3V5aW5waWMuY29tL2xhcmdlL3Rvcy1jbi1pLTAwMjIvMzgyNGZkMDY5ZTNjNGRlYWExMWQwZjc5ZmQ4YWFhMzU.jpg)
2、定义参数并建立模型。
#参数
control <- rpart.control(minsplit=10,
minbucket=5,
xval=10,cp=0.1)
#决策树模型
model<- rpart(Kyphosis ~ Age + Number + Start, data = kyphosis,
method="class",control=control,
parms = list(prior = c(0.6,0.4), split = "information"))
3、查看模型结果。summary可以查看模型的详细过程。
summary(model)
asRules(model)
4、绘制决策树图。可以从图中看到每一类的观测数及占总数的比例。
fancyRpartPlot(model)
![](https://www.89179.net/other_image/aHR0cHM6Ly9wMy5kb3V5aW5waWMuY29tL2xhcmdlL3Rvcy1jbi1pLTAwMjIvMDU4YTE0ZGI5MmJhNGRkMjhhNTExMjlkMWY1YzUzZDM.jpg)
5、查看交叉验证结果,并绘图。
model$cptable
plotcp(model)
grid()
可以看到结果中有交叉验证的估计误差(“xerror”),以及标准误差(“xstd”),平均相对误差=xerror±xstd 。
6、根据交叉验证结果,找出估计误差最小时的cp值,并重新建立模型。
#选择交叉验证的估计误差最小时对应的cp
xerr <-model$cptable[,"xerror"]
minxerr <- which.min(xerr)
mincp <-model$cptable[minxerr, "CP"]
#新模型
model.prune <- prune(model,cp=mincp)
fancyRpartPlot(model.prune)
扩展资料
决策树算法中,会对数据特征不断提问,然后根据每次回答逐步对数据进行分类。
节点(Node)的分类:节点分为根节点(Root Node)与叶节点(Leaf Node)。其中根节点位于决策树最顶部,它是分类的起始点,位于最底端且没有子节点的节点成为叶节点。
在决策树中,对各节点提问题,并根据回答对节点进行分叉,从而实现分类数据的目的。‘不纯度’(impurity)用作评估数据分离程度的标准,将一个节点数据划分为2个子节点时,最好的提问能够使子节点的不纯度降至最低。
节点中含有的分类越多,不纯度越高。反之,只有一个分类的时候,不纯度最低。
原文链接:https://blog.csdn.net/RH_Wang/java/article/details/81703151