对book3.csv数据集,实现如下功能:

  (1)创建训练集、测试集

  (2)用rpart包创建关于类别的cart算法的决策树

  (3)用测试集进行测试,并评估模型

  book3.csv数据集

setwd('D:\\data')
list.files() 
dat=read.csv(file="book3.csv",header=TRUE) #变量重命名,并通过x1~x11对class属性进行预测
colnames(dat)<-c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","class") n=nrow(dat)
split<-sample(n,n*(3/4))
traindata=dat[split,]
testdata=dat[-split,] set.seed(1) library(rpart) #用测试集进行测试
Gary1<-rpart(class~.,data=testdata,method="class", control=rpart.control(minsplit=1),parms=list(split="gini"))
printcp(Gary1) #交叉矩阵评估模型
pre1<-predict(Gary1,newdata=testdata,type='class')
tab<-table(pre1,testdata$class)
tab #评估模型(预测)的正确率
sum(diag(tab))/sum(tab)

Gary.Script

实现过程

  数据预处理并创建训练(测试)集

setwd('D:\\data')
list.files() 
dat=read.csv(file="book3.csv",header=TRUE) #变量重命名,并通过x1~x11对class属性进行预测
colnames(dat)<-c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10","x11","class") n=nrow(dat)
split<-sample(n,n*(3/4))
traindata=dat[split,]
testdata=dat[-split,]

  设定生成随机数的种子,种子是为了让结果具有重复性

set.seed(1) 

  加载rpart包创建关于类别的cart算法的决策树

library(rpart)

  用测试集进行测试

> Gary1<-rpart(class~.,data=testdata,method="class", control=rpart.control(minsplit=1),parms=list(split="gini"))
> printcp(Gary1) Classification tree:                      #分类树:
rpart(formula = class ~ ., data = testdata, method = "class",
parms = list(split = "gini"), control = rpart.control(minsplit = 1)) Variables actually used in tree construction:      #树构建中实际使用的变量:
[1] x1 x10 x2 x4 x5 x8                  #〔1〕X1 x10 x2 x4 x5 x8 Root node error: 57/175 = 0.32571            #根节点错误:57/175=0.32571 n= 175 CP nsplit rel error xerror xstd
1 0.754386 0 1.000000 1.00000 0.108764
2 0.052632 1 0.245614 0.31579 0.070501
3 0.035088 3 0.140351 0.31579 0.070501
4 0.017544 6 0.035088 0.35088 0.073839
5 0.010000 7 0.017544 0.31579 0.070501

  交叉矩阵评估模型

 pre1<-predict(Gary1,newdata=testdata,type='class')
> tab<-table(pre1,testdata$class)
> tab pre1 恶性 良性
恶性 57 1
良性 0 117

  评估模型(预测)的正确率

  对角线上的数据实际值和预测值相同,非对角线上的值为预测错误的值

> sum(diag(tab))/sum(tab)
[1] 0.9942857

R_Studio(cart算法决策树)对book3.csv数据用测试集进行测试并评估模型的更多相关文章

  1. Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型的准确率(图文详解)

    不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率 具体,见 Hadoop+Spark大数据巨量分析与机器学习整合开发实战的 ...

  2. 《机器学习实战》学习笔记第九章 —— 决策树之CART算法

    相关博文: <机器学习实战>学习笔记第三章 —— 决策树 主要内容: 一.CART算法简介 二.分类树 三.回归树 四.构建回归树 五.回归树的剪枝 六.模型树 七.树回归与标准回归的比较 ...

  3. 02-23 决策树CART算法

    目录 决策树CART算法 一.决策树CART算法学习目标 二.决策树CART算法详解 2.1 基尼指数和熵 2.2 CART算法对连续值特征的处理 2.3 CART算法对离散值特征的处理 2.4 CA ...

  4. 十一,专著研读(CART算法)

    十一,专著研读(CART算法) CART称为分类回归树,既能用于分类也能用于回归.使用二元切分方法处理连续型变量,给定特定值,如果特征值大于给定值就走左子树,否则走右子树. CART算法步骤 决策树生 ...

  5. Spark Mllib里决策树回归分析使用.rootMeanSquaredError方法计算出以RMSE来评估模型的准确率(图文详解)

    不多说,直接上干货! Spark Mllib里决策树二元分类使用.areaUnderROC方法计算出以AUC来评估模型的准确率和决策树多元分类使用.precision方法以precision来评估模型 ...

  6. 03机器学习实战之决策树CART算法

    CART生成 CART假设决策树是二叉树,内部结点特征的取值为“是”和“否”,左分支是取值为“是”的分支,右分支是取值为“否”的分支.这样的决策树等价于递归地二分每个特征,将输入空间即特征空间划分为有 ...

  7. 决策树-预测隐形眼镜类型 (ID3算法,C4.5算法,CART算法,GINI指数,剪枝,随机森林)

    1. 1.问题的引入 2.一个实例 3.基本概念 4.ID3 5.C4.5 6.CART 7.随机森林 2. 我们应该设计什么的算法,使得计算机对贷款申请人员的申请信息自动进行分类,以决定能否贷款? ...

  8. 决策树模型 ID3/C4.5/CART算法比较

    决策树模型在监督学习中非常常见,可用于分类(二分类.多分类)和回归.虽然将多棵弱决策树的Bagging.Random Forest.Boosting等tree ensembel 模型更为常见,但是“完 ...

  9. python数据分析算法(决策树2)CART算法

    CART(Classification And Regression Tree),分类回归树,,决策树可以分为ID3算法,C4.5算法,和CART算法.ID3算法,C4.5算法可以生成二叉树或者多叉树 ...

随机推荐

  1. spark教程(四)-SparkContext 和 RDD 算子

    SparkContext SparkContext 是在 spark 库中定义的一个类,作为 spark 库的入口点: 它表示连接到 spark,在进行 spark 操作之前必须先创建一个 Spark ...

  2. Codeforces 1201D. Treasure Hunting

    传送门 看一眼感觉就是 $dp$,但是似乎状态太多了 考虑推推性质 首先每到一行都要把所有宝藏都走到,那么一定会走到最左边的和最右边的宝藏 注意到一旦走完所有宝藏时肯定是在最左边或者最右边的宝藏位置 ...

  3. mongo分布式锁Java实现

    一.分布式锁使用场景: 代码部署在多台服务器上,即分布式部署. 多个进程同步访问一个共享资源. 二.需要的技术: 数据库:mongo java:mongo操作插件类 MongoTemplate(mav ...

  4. document.body.scrollTop无效的解决方法

    1.document.body.scrollTop = 0 有时候不生效,两种解决方案,试试看. 1-1.设置:document.documentElement.scrollTop = 0;1-2.设 ...

  5. Visual Studio 2010中的js注释

    Visual Studio 2010中的js注释已经很强大了,但怎么才能和调用c#的方法一样容易呢?怎样才能让每个参数都有注释说明呢?底下就是想要的答案. 先上图,如图所示: 其中红色的办法为注释效果 ...

  6. vue配置路由时报错 Error in render: "RangeError: Maximum call stack size exceeded"

    虽然标题写的是配置路由报错,最终也是通过修改路由解决的,但是导致报错的还有一个主要因素,是因为我增加了一个功能“页面刷新时,根据url高亮左侧导航”,如下图: 1.页面刷新,根据url高亮左侧导航代码 ...

  7. [转] JAVA分为三个体系,JavaSE,JavaEE,JavaME(J2ME)的区别以及各个版

        Java SE(JavaPlatform,Standard Edition).Java SE 以前称为 J2SE.它允许开发和部署在桌面.服务器.嵌入式环境和实时环境中使用的 Java 应用程 ...

  8. Hyperledger Fabric 环境搭建(1)

    1,Fabric的程序模块组成 Fabric不是一个单独的程序而是由一组模块组成,这些模块中的每一个都是一个可独立运行的可执行文件. (1)peer 主节点模块,负责存储区块链数据,运行维护链码: ( ...

  9. LVS DR模型RS端修改配置脚本

    #!/bin/bash vip=x.x.x.x in start) > /proc/sys/net/ipv4/conf/all/arp_ignore > /proc/sys/net/ipv ...

  10. shelve:极其强大的序列化模块

    介绍 数据持久化,就是把数据从内存刷到磁盘上.但是要保证在读取的时候还能恢复到原来的状态.像pickle和json之类的持久化模块基本上无需介绍了,这里介绍两个其他很少用但是功能很强大的模块. dbm ...