R_针对churn数据用id3、cart、C4.5和C5.0创建决策树模型进行判断哪种模型更合适
2018-10-20 08:40
309 查看
data(churn)导入自带的训练集churnTrain和测试集churnTest
用id3、cart、C4.5和C5.0创建决策树模型,并用交叉矩阵评估模型,针对churn数据,哪种模型更合适
决策树模型 ID3/C4.5/CART算法比较 传送门
data(churn)为R自带的训练集,这个data(chun十分特殊)
先对data(churn)训练集和测试集进行数据查询
churnTest数据
diag(x = 1, nrow, ncol) diag(x) <- value 解析: x:一个矩阵,向量或一维数组,或不填写。 nrow, ncol:可选 行列。 value :对角线的值,可以是一个值或一个向量diag()函数
cart创建决策树模型:
与id3区别parms=list(split="gini"))
Gary1<-rpart(churn~.,data=churnTrain,method="class", control=rpart.control(minsplit=1),parms=list(split="gini"))
解释略
> data(churn) > > set.seed(1) > > library(rpart) > > Gary1<-rpart(churn~.,data=churnTrain,method="class", control=rpart.control(minsplit=1),parms=list(split="gini")) > printcp(Gary1) Classification tree: rpart(formula = churn ~ ., data = churnTrain, method = "class", parms = list(split = "gini"), control = rpart.control(minsplit = 1)) Variables actually used in tree construction: [1] international_plan number_customer_service_calls state [4] total_day_minutes total_eve_minutes total_intl_calls [7] total_intl_minutes voice_mail_plan Root node error: 483/3333 = 0.14491 n= 3333 CP nsplit rel error xerror xstd 1 0.089027 0 1.00000 1.00000 0.042076 2 0.084886 1 0.91097 0.96273 0.041414 3 0.078675 2 0.82609 0.90062 0.040265 4 0.052795 4 0.66874 0.72050 0.036551 5 0.023810 7 0.47412 0.49896 0.030957 6 0.017598 9 0.42650 0.53416 0.031942 7 0.014493 12 0.36853 0.51553 0.031426 8 0.010000 14 0.33954 0.48654 0.030599 > > #交叉矩阵评估模型 > pre1<-predict(Gary1,newdata=churnTrain,type='class') > tab<-table(pre1,churnTrain$churn) > tab pre1 yes no yes 354 35 no 129 2815 > > #评估模型(预测)的正确率 > sum(diag(tab))/sum(tab) [1] 0.9507951
C4.5创建决策树模型:
读取数据,加载party包
data(churn) library(RWeka)
使用rpart包J48()创建决策树模型
> Gary<-J48(churn~.,data=churnTrain) > tab<-table(churnTrain$churn,predict(Gary)) > tab yes no yes 359 124 no 24 2826 > #评估模型(预测)的正确率 > sum(diag(tab))/sum(tab) [1] 0.9555956
C5.0创建决策树模型:
C5.0算法则是C4.5算法的商业版本,较C4.5算法提高了运算效率,它加入了boosting算法,使该算法更加智能化
解释略
> data(churn) > treeModel <- C5.0(x = churnTrain[, -20], y = churnTrain$churn) > > ruleModel <- C5.0(churn ~ ., data = churnTrain, rules = TRUE) > > tab<-table(churnTest$churn,predict(ruleModel,churnTest)) > tab yes no yes 149 75 no 15 1428 > #评估模型(预测)的正确率 > sum(diag(tab))/sum(tab) [1] 0.9460108
diag(x = 1, nrow, ncol)
diag(x) <- value
解析:
x:一个矩阵,向量或一维数组,或不填写。
nrow, ncol:可选 行列。
value :对角线的值,可以是一个值或一个向量
相关文章推荐
- Hibernate动态建表,通过hbm.xml配置文件创建数据表,进行数据库操作, 动态模型
- [置顶] #warning 当多个视图进行切换的时候 判断存储数据模型数组的元素个数是否为空 保证只请求一次
- 已知一个几乎有序的数组,几乎有序是指,如果把数组排好顺序的话,每个元素移动的距离可以不超过k,并且k相对于数组来说比较小。请选择一个合适的排序算法针对这个数据进行排序。 给定一个int数组A,同时给定
- Hibernate动态建表,通过hbm.xml配置文件创建数据表,进行数据库操作, 动态模型
- EF总结--模型创建和数据的增删改查
- IOS种四种持有化数据方式——(2)对模型对象进行归档
- 使用两种不同配置的K近邻回归模型对美国波士顿房价数据进行回归预测
- 怎么针对大批量数据进行分割
- 使用数据挖掘模型进行查询
- 用 Flask 来写个轻博客 (4) — (M)VC_创建数据模型和表
- Imode平台下使用原生数据创建3D模型_旋转
- 创建一个加密表空间并对表内数据进行加密的示例
- MVC POST在ACTION上进行多个模型的数据绑定
- 机器学习自学之路-SVM 算法选择:三种算法优缺点比较(ID3、C4.5、CART)
- 决策树(三)--完整总结(ID3,C4.5,CART,剪枝,替代)
- Android中创建一个使用ListView以及用BaseAdapter进行数据适配的程序
- 针对某个表使用高级复制进行数据同步示例
- SharePoint服务器端对象模型 之 使用LINQ进行数据访问操作(Part 1)
- 为什么一些机器学习模型需要对数据进行归一化?
- ASP.NET MVC3 实例(二) 使用 Entity Framework 创建实体数据模型