r语言决策树c4.5案例,R完成--决策树分类 一个使用rpart完成决策树分类的例子如下:...

传统的ID3和C4.5一般用于分类问题,其中ID3使用信息增益进行特征选择,即递归的选择分类能力最强的特征对数据进行分割,C4.5唯一不同的是使用信息增益比进行特征选择。

特征A对训练数据D的信息增益g(D, A) = 集合D的经验熵H(D) - 特征A给定情况下D的经验条件熵H(D|A)

特征A对训练数据D的信息增益比r(D, A) = g(D, A) / H(D)

而CART(分类与回归)模型既可以用于分类、也可以用于回归,对于回归树(最小二乘回归树生成算法),需要寻找最优切分变量和最优切分点,对于分类树(CART生成算法),使用基尼指数选择最优特征。

install.packages("rpart")

install.packages("rpart.plot")

library(rpart);

## rpart.control对树进行一些设置

## xval是10折交叉验证

## minsplit是最小分支节点数,这里指大于等于20,那么该节点会继续分划下去,否则停止

## minbucket:叶子节点最小样本数

## maxdepth:树的深度

## cp全称为complexity parameter,指某个点的复杂度,对每一步拆分,模型的拟合优度必须提高的程度

ct

## kyphosis是rpart这个包自带的数据集

## na.action:缺失数据的处理办法,默认为删除因变量缺失的观测而保留自变量缺失的观测。

## method:树的末端数据类型选择相应的变量分割方法:

## 连续性method=“anova”,离散型method=“class”,计数型method=“poisson”,生存分析型method=“exp”

## parms用来设置三个参数:先验概率、损失矩阵、分类纯度的度量方法(gini和information)

## cost我觉得是损失矩阵,在剪枝的时候,叶子节点的加权误差与父节点的误差进行比较,考虑损失矩阵的时候,从将“减少-误差”调整为“减少-损失”

fit

data=kyphosis, method="class",control=ct,

parms = list(prior = c(0.65,0.35), split = "information"));

## 第一种

par(mfrow=c(1,3));

plot(fit);

text(fit,use.n=T,all=T,cex=0.9);

## 第二种,这种会更漂亮一些

library(rpart.plot);

rpart.plot(fit, branch=1, branch.type=2, type=1, extra=102,

shadow.col="gray", box.col="green",

border.col="blue", split.col="red",

split.cex=1.2, main="Kyphosis决策树");

## rpart包提供了复杂度损失修剪的修剪方法,printcp会告诉分裂到每一层,cp是多少,平均相对误差是多少

## 交叉验证的估计误差(“xerror”列),以及标准误差(“xstd”列),平均相对误差=xerror±xstd

printcp(fit);

## 通过上面的分析来确定cp的值

## 我们可以用下面的办法选择具有最小xerror的cp的办法:

## prune(fit, cp= fit$cptable[which.min(fit$cptable[,"xerror"]),"CP"])

fit2

rpart.plot(fit2, branch=1, branch.type=2, type=1, extra=102,

shadow.col="gray", box.col="green",

border.col="blue", split.col="red",

split.cex=1.2, main="Kyphosis决策树");效果图如下:

AAffA0nNPuCLAAAAAElFTkSuQmCC

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值