决策树是根据若干输入变量的值构造出一个适合的模型,以此来预测输出变量的值,并用树形结构展示出来。决策树主要有两个类别:分类树和回归树。分类树主要针对离散的目标变量,回归树则针对连续的目标变量。R语言中的rpart软件包既可以实现回归树,又可以实现分类树。

1 安装并加载rpart软件包。

install.packages("rpart")

library(rpart)

rpart()函数的基本形式为:

rpart(formula, data, weights, subset, na.action = na.rpart, method, model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)

其中,formula为要建立模型的公式,一般格式为y~x1+x2+...+xn。当输入变量为除y以外的所有变量时,可简化为y~.来表示;data为训练数据集;subset可以帮助我们选出data中的若干行来建立模型;na.action为缺失值处理方式,默认删除缺失样本;method用于选择决策树的类型,主要有anova回归树、class分类树,另外还有exp、poisson;control中含有大量参数,与rpart.control一致,minsplit表示每个节点中所含样本数的最小值,minbucket表示每个叶节中所含样本数的最小值,cp表示复杂度参数,maxdepth表示节点层次的最大值。

2  读取数据集。

sz_data=read.csv("sz_data.csv",head=T,encoding="utf-8")

head(sz_data);dim(sz_data) #查看数据的前几行和数据维度

3  进行数据预处理。在实际应用中,如果数据有缺失值,需要先按照一定的方法先对缺失值进行处理。这里我们直接划分训练集和测试集,并且随机抽取70%的样本作为训练集。

n=0.7*nrow(sz_data) #作为训练集的样本量

sub_train=sample(nrow(sz_data),n)#随机抽取n个样本

data_train=sz_data[sub_train,-1]#训练集

data_test=sz_data[-sub_train,-1]#测试集

head(data_train);dim(data_train)

head(data_test);dim(data_test)

4  由于数据集的目标变量是离散变量,因此选择method="class"。本例中的节点层次的最大值设为2,参数的优劣可根据后面计算的错误率反复验证。

rp_fit1=rpart(is_rise~.,data_train,method="class",maxdepth=2,minsplit=10)#建立分类树

summary(rp_fit1)

print(rp_fit1)#导出决策树的表格

结果显示根节点共有294个样本,即全部训练数据集。"2)"和"3)"以"Opening"变量为节点,将样本分为两支,分别是8、286个样本。

5  绘制决策树图形。这里调整了参数,在图形中做一些对比。

rp_fit2=rpart(is_rise~.,data_train,method="class",maxdepth=3,minsplit=10) #建立分类树2

par(mfrow = c(1,2), xpd = NA)

plot(rp_fit1)

text(rp_fit1,use.n=TRUE)

plot(rp_fit2)

text(rp_fit2,use.n=TRUE)

6  验证模型的准确性。

#对测试集预测目标变量

pre_is_rise=predict(rp_fit1,data_test,type="class")

pre_is_rise

#计算错误率

error_rp=sum(pre_is_rise!=data_test$is_rise)/nrow(data_test);error_rp

实际应用中,对参数、输入变量等进行调整,可增加准确度。

欢庆双节

1071svm函数 r语言_如何利用R语言中的rpart函数建立决策树模型相关推荐

  1. R语言(把银行已认购定期存款的客户原始数据建立决策树模型,从而预测新一批客户是否会认购定期存款)

    原始数据:bank 输入变量: #银行客户资料: 1-年龄(数字) 2-工作:工作类型(分类:"管理","未知","失业","管理 ...

  2. rstudio r语言_如何在R中接受用户输入?

    rstudio r语言 Taking a user input is very simple in R using readline() function. In this tutorial, we ...

  3. r语言实现sem_利用R语言做结构方程模型分析

    R的功能很强大,各种包很多.但就是因为包太多,造成了很大的麻烦.不可避免的,可以做结构方程模型的包也不少,例如:sem.psych.OpenMx,lavaan等.我选择了lavaan包.原因:语法简介 ...

  4. python 运行r语言_如何在R中运行Python

    python 运行r语言 尽管我很喜欢R,但很显然Python还是一种很棒的语言-既适用于数据科学又适用于通用计算. R用户想要在Python中做一些事情可能有充分的理由. 也许这是一个很棒的库,还没 ...

  5. 计算密码子频率的代码R语言_科学网—R语言终止密码子统计 - 熊荣川的博文

    熊荣川 六盘水师范学院生物信息学实验室 #R语言终止密码子统计 setwd("**") infile = "protein1.fasta" outname = ...

  6. R语言用WinBUGS 软件对学术能力测验(SAT)建立分层模型

    原文链接:http://tecdat.cn/?p=11974 R2WinBUGS软件包提供了从R调用WinBUGS的便捷功能.它自动以WinBUGS可读的格式写入数据和脚本,以进行批处理(自1.4版开 ...

  7. c语言dummy作为参数,C语言中的dummy函数

    (1)什么是dummy函数? 和其他C语言函数相同,有函数的返回值类型和形参定义,也有函数体,只是函数体内部没有任何执行语句.实际也称为空函数. (2)为什么要定义dummy函数? dummy函数可以 ...

  8. 函数中有多个return?C语言中,一个函数可以有几个返回值?

    在移植wifi的代码时,遇到了一些与下面类似的函数,这些函数中有不只一个return,这可是个新鲜的玩意儿: int func (int b) {int a=5;if (a>b)return a ...

  9. c语言休眠函数useconds类型,带你了解C语言中的Sleep函数(附代码)

    Sleep函数: 功 能: 执行挂起一段时间 用 法:unsigned sleep(unsigned seconds); 注意: 在VC中使用带上头文件#include ,在Linux下,gcc编译器 ...

最新文章

  1. spring jpa @Query中使用in
  2. R语言可视化绘图基础知识详解
  3. 当上 CTO 才发现:程序员时常犯的 4 个错误有多可怕!
  4. 微信JS-SDK开发:扫一扫接口功能实现
  5. Java基础-static 关键字解析
  6. established关键字
  7. php井字游戏代码_PHP初级笔试题:Tic-Tac-Toe(n阶井字棋)判断胜负
  8. [翻译]利用C#获取终端服务(Terminal Services)会话的闲置时间
  9. 一个意想不到的CDO.Message 错误
  10. 三包围结构的字是什么样的_清桦学书之结构篇——包围结构。
  11. 如何确认RNA的质量?附RNA提取实验方法技巧分析
  12. 最新抖音简单无人直播教程
  13. (文末送书)字符数组与字符串
  14. B站《三体》动画正式开播 刘慈欣:宇宙很大,生活更大
  15. 用计算机算出爸爸我爱你,爸爸,我爱你。
  16. Terminate vs Disconnect(别再傻傻分不清楚了)
  17. IOS系统ipa软件包在线安装
  18. 面试笔试中算法设计问题的回答技巧总结
  19. HDU 3440 House Man (差分约束)
  20. 汽车java歌曲_车载音乐推荐 50首适合开车听的歌曲 2019车载歌曲 开车必备100首...

热门文章

  1. HDU2049 组合数学 错排公式
  2. 计算机网络是如何通信的【一】
  3. SecurityManager安全管理器
  4. 海量数据 - join处理
  5. LeetCode 01【两数之和】【LeetCode人生第一题!】
  6. Android Json处理框架
  7. DownloadManager 的使用
  8. 初探swift语言的学习笔记一(基本数据类型)
  9. 块语法Block在MVC思维的妙用之多重M层代理传值
  10. Android-完美解决在Activity中触摸返回键onBackPressed不能触发问题