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

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

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

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

  book3.csv数据集

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

Gary.Script

实现过程

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

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

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

  1. set.seed(1)

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

  1. library(rpart)

  用测试集进行测试

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

  交叉矩阵评估模型

  1. pre1<-predict(Gary1,newdata=testdata,type='class')
  2. > tab<-table(pre1,testdata$class)
  3. > tab
  4.  
  5. pre1 恶性 良性
  6. 恶性 57 1
  7. 良性 0 117

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

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

  1. > sum(diag(tab))/sum(tab)
  2. [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. POJ - 1149 PIGS (建图思维+最大流)

    (点击查看原题) 题目分析 (以下均为 Edelweiss 大佬的思路,博主承认自己写不了这么好,但是学习的心促使我记录下这个好题的写法,所以代码是我写的) [题目大意] 有 M 个猪圈,每个猪圈里初 ...

  2. JAVA基础:接口

    接口声明: interface 接口名 实现接口: class 类名 implements 接口名 接口特点: 1. 接口中的成员变量默认都是public.static.final类型的,必须被显式初 ...

  3. 使用GPU训练TensorFlow模型

    查看GPU-ID CMD输入: nvidia-smi 观察到存在序号为0的GPU ID 观察到存在序号为0.1.2.3的GPU ID 在终端运行代码时指定GPU 如果电脑有多个GPU,Tensorfl ...

  4. react生态常用库分类

    一. web项目 1.脚手架 create-react-app 自动安装react.react-dom 2.核心 react.react-dom 3.路由 react-router.react-rou ...

  5. P3488 [POI2009]LYZ-Ice Skates

    传送门 这一题基础是二分图匹配,并且要知道一个 $Hall$ 定理:对于二分图能完全匹配的充要条件是,设点数少的那边为左边,点数为 $n$,对于 $k \in [1,n]$ ,左边任意 $k$ 个点, ...

  6. 一、程序安全-SQL注入漏洞

    先新建MYDB.MDF,表MyUser: 测试页面: 一.利用报错获取信息 操作:按姓名精确查询,在输入框输入:小卫' and 1=db_name()/0 and '1'='1执行语句:select ...

  7. Task的取消

    原文:.NET 4 并行(多核)编程系列之三 从Task的取消 .NET 4 并行(多核)编程系列之三 从Task的取消 前言:因为Task是.NET 4并行编程最为核心的一个类,也我们在是在并行编程 ...

  8. 第二章:排序算法 及其他 Java代码实现

    目录 第二章:排序算法 及其他 Java代码实现 插入排序 归并排序 选择排序算法 冒泡排序 查找算法 习题 2.3.7 第二章:排序算法 及其他 Java代码实现 --算法导论(Introducti ...

  9. Java基础(那些习以为常缺不知道原理的地方)

    一.基础 1.1 正确的使用equals方法 Object的equals方法容易抛空指针异常,应使用常量或确定有值的对象来调用 equals.如下代码 // 不能使用一个值为null的引用类型变量来调 ...

  10. 教你用python爬取网站美女图(附代码及教程)

    我前几篇文章都是说一些python爬虫库的用法,还没有说怎样利用好这些知识玩一些好玩的东西.那我今天带大家玩好玩又刺激的,嘻嘻!对了,requests库和正则表达式很重要的,一定要学会!一定要学会!! ...