R 是一种用于统计计算与作图的开源软件,同时也是一种编程语言,它广泛应用于企业和学术界的数据分析领域,正在成为最通用的语言之一。由于近几年数据挖掘、大数据等概念的走红, R 也越来越多的被人关注。

一、环境准备

操作系统 windows

下载安装 R 地址: http://mirrors.xmu.edu.cn/CRAN/

下载安装 RStudio 一个非常实用的 R 语言的 IDE ,是一个免费的软件

地址: http://www.rstudio.com/products/RStudio/#Desk

二、下载安装 rpart

点击 InstallPackages

packages 中输入: rpart->Install

等待安装完成。

注: Installfrom 中可以选择安装方式,图中显示的是从 CRAN 中通过网络连接下载,也可以选择在本地文件中寻找 package 安装。

三、下载数据

我试验的数据是从 UCI 上下载的数据,当然也可以用 rpart 包中自带的数据集。

UCI 下载数据地址: http://archive.ics.uci.edu/ml/datasets/Bank+Marketing

将数据解压后,会有许多 .csv 格式的数据文件,在这里本次试验选择的是 bank.csv

四、使用 R 读取数据

打开 RStudio

或者新建一个 R Script

接下来我们在R Script中书写代码,同样,也可以在控制台上一行一行的书写,一条一条的执行,但是,代码换行时要按shift+Enter

 bank <- read.csv("D:/data/MachineLearning/bank/bank.csv",header=TRUE,sep=";") #读取bank.csv数据文件
 #注意:windows文件路径复制后文件的分隔符为“\”,但是R语言中不识别这种分隔符,她只识别“/”,
 #header=TRUE表示使用文件的头标签,默认为FALSE,sep=";"表示数据用分号分隔,默认为"",
 bank_train <- bank[1:4000,] #对读入的数据人为分割为训练组和测试组,
 bank_test <- bank[4001:4521,1:16]
 bank_test1 <- bank[4001:4521,]
 library(rpart)  #在使用包前首先要使用该命令导入包,也可以在Packages中包前的框框中打钩
 fit <- rpart(y~age+job+marital+education+default+balance+housing+loan+contact
              +day+month+duration+campaign+pdays+previous+poutcome,method="class",
              data=bank_train)
 # 我们可以使用help(rpart)来获取rpart的使用帮助,帮助文档Usage如下
 # rpart(formula, data, weights, subset, na.action = na.rpart, method,
 # model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)
 # 在这里我们只设置formula,data,model这三个参数
 plot(fit,uniform=TRUE,main="Classification Tree for Bank") #画决策树图
 text(fit,use.n=TRUE,all=TRUE)
 #至此,第一个决策树图画好了,第一个训练的模型保存在fit中
 #下面我们对测试数据进行预测(此处预测的是y值是yes or no)
 result <- predict(fit,bank_test,type="class") 
 # 在控制台中直接输入result即可查看预测的结果,由于数目较多,我们写一个小的程序,将预测
 # 结果同真实值比较一下,看正确率有多少
 # 详情见 count_result.R
 # 我们写完的函数保存在本地磁盘中,使用时必须指明路径,使用source()函数
 source("D:/work/R_work/count_result.R")
 count_result(result,bank_test1) #结果为0.9021
 #通过观察数据,我们可以发现,在poutcome与contact属性中,有许多unknown的值,
 #通过summary(bank)我们可以看到,unknown值在其所在属性框中所占比例过大,而且该
 #值其实为缺失值,所以我们使用rpart()函数中的na.action参数,来处理缺失值
 #由于R只识别NA缺失值,所以我们需要对数据框中的unknown值进行处理
 n <- nrow(bank)  #获得data的行数
 for (i in 1:n){
   if(bank[i,9]=="unknown"){   #判断第i,9个数据是否为unknown
     bank[i,9] <- NA           #将第i,9个数据替换为NA
   if(bank[i,16]=="unknown"){
     bank[i,16] <- NA
 #我们已知第9、16列为含有unknown的属性框
 fit2 <- rpart(y~age+job+marital+education+default+balance+housing+loan+contact
               +              +day+month+duration+campaign+pdays+previous+poutcome,method="class",
               +              data=bank_train,na.action=na.rpart)
 plot(fit,uniform=TRUE,main="Classification Tree for Bank") #画决策树图
 text(fit,use.n=TRUE,all=TRUE)
 result2 <- predict(fit2,bank_test,type="class")
 count_result(result2)# 结果仍为0.9021表示之前的关于缺失值的推测不准确
 #下边我们探索使用rpart()的control参数设置 
 fit3 <- rpart(y~age+job+marital+education+default+balance+housing+loan+contact
               +              +day+month+duration+campaign+pdays+previous+poutcome,method="class",
               +              data=bank_train,na.action=na.rpart,control=rpart.control(minsplit=20,cp=0.001))
 result3 <- predict(fit3,bank_test,type="class")
 count_result(result3,bank_test1)# 结果为0.90403 预测的准确度有所上升
 #下边我们队minsplit(最小分割点)设大一点 40
 fit4 <- rpart(y~age+job+marital+education+default+balance+housing+loan+contact
               +              +day+month+duration+campaign+pdays+previous+poutcome,method="class",
               +              data=bank_train,na.action=na.rpart,control=rpart.control(minsplit=40,cp=0.001))
 result4 <- predict(fit4,bank_test,type="class")
 count_result(result4,bank_test1) #结果为0.9136 这说明随着分割点的增多,预测的准确率越高,

关于rpart的其他函数的功能探索,请继续关注...

count_result.R

count_result <- function(result,data_test){
  n <- length(result)
  count_right <- 0
  i <- 1
  for (i in 1:n){
    if (result[i]==data_test[i,17]){
      count_right = count_right+1
  print(count_right/n)
                                    R语言使用rpart构建决策树模型、使用prune函数按照指定复杂度对决策树剪枝、使用rpart.plot中的prp函数可视化训练、剪枝好的决策树、type参数、extra参数、fallen.leaves参数控制决策树精细化显示
                                    决策树算法的实现:一、C4.5算法的实现a、需要的:sampling、partylibrary(sampling)library(party)sampling用于实现数据分层随机抽样,构造训练集和测试集。party用于实现决策树算法另外,还可以设置随机数种子,可以获得相同的随机数。方便数据重复检验。#设置随机数种子,可以获得相同的随机数set.seed(100)b、数据准备我们使用iris数据集...
                                    例如,可以使用type参数来选择节点的显示类型,使用extra参数添加额外的文本或符号,使用fallen.leaves参数将叶子节点放置在树的底部等等。在R语言中,rpart提供了构建决策树模型的功能,而rpart.plot则是用于可视化最终的决策树模型结构。接下来,我们使用一个示例数据集来构建一个简单的决策树模型。通过可视化决策树,我们可以更好地理解模型的决策过程,并对模型的性能和预测结果进行解释和验证。接下来,我们可以使用rpart.plot中的rpart.plot函数来可视化决策树模型的结构。
                                    关于决策树理论方面的介绍,李航的《统计机器学习》第五章有很好的讲解。
传统的ID3和C4.5一般用于分类问题,其中ID3使用信息增益进行特征选择,即递归的选择分类能力最强的特征对数据进行分割,C4.5唯一不同的是使用信息增益比进行特征选择。
特征A对训练数据D的信息增益g(D, A) = 集合D的经验熵H(D) - 特征A给定情况下D的经验条件熵H(D|A)
特征A对训练数据D的信息增益比r
                                    在R语言中,我们可以使用一些库和函数来构建决策树,并将结果可视化展示。在可视化结果中,每个节点代表一个特征,箭头表示不同特征值的分支,叶节点表示最终的分类结果。根据决策树的结构,我们可以推断出不同特征对于分类结果的重要性。这里以一个虚拟的分类问题为例,假设我们有一个数据含一些关于动物的特征,并且我们想根据这些特征预测动物是哺乳动物还是鸟类。通过可视化决策树,我们可以更直观地理解模型的决策过程,并推断出不同特征对于分类结果的重要性。例如,我们可以调整节点的颜色、标签的显示方式、箭头的样式等。
rpart中的rpart()函数可以实现决策树和回归树的建模
rpart()的使用方法
rpart(formula, data, weights, subset, na.action = na.rpart, method,
      model = FALSE, x = FALSE, y = TRUE, parms, control, cost, ...)
formula	
a formula, with a response but no interaction terms. I
                                    通过以上步骤,我们成功地使用R语言中的rpart构建了一个基于乳腺癌数据集的树回归模型。我们导入了数据集,进行了基本的数据探索和预处理,拟合了模型,并评估了模型的性能。在本篇文章中,我们将使用R语言中的rpart构建一种树回归模型,以预测乳腺癌的分类。通过这个例子,你可以学习如何使用R语言中的rpart构建树回归模型,并在乳腺癌数据集上进行分类预测。一旦模型已经拟合,我们可以使用测试集进行预测,并评估模型的性能。函数基于测试集进行预测,并将预测结果与实际的类别进行比较,从而计算模型的准确率。
                                    比起文本描述的规则,我们更希望能使用图形来直观展示决策树的结果,这就是本文介绍的重点——决策树结果可视化。右端的"."表示将除了use以外的所有变量作为自变量,你可以根据数据来调整自己的模型结构。以hospital数据为例,使用rpart()进行决策树模型的构建,并将结果保存到model变量中,在这个模型中,如何你想改变各结点的颜色,可以通过调整box.palette参数来实现。如果想要调整各结点的颜色,可以通过调整palette参数来实现,其用法与方法中的box.palette相同。...
                                    通过使用R语言中的rpart,我们成功地构建了一个树回归模型,并使用前列腺数据集进行了演示和实践。在本文中,我们将使用R语言中的rpart来构建一个树回归模型,以预测前列腺癌患者的生存期。通过使用R语言中的rpart,我们可以轻松地构建和应用树回归模型,从而为数据分析和预测任务提供有力的工具和方法。在实际应用中,我们可以使用更大规模的数据集和更复杂的特征来训练和改进模型。此外,还可以尝试使用其他算法和技术来构建和优化树回归模型,以实现更好的预测效果。为此,我们需要将数据集拆分为训练集和测试集。
                                    通过这些代码,您可以构建决策树模型,并使用该模型对新数据进行预测。请记住,在实际应用中,您可能需要根据数据集的特点和问题的要求进行适当的调整和修改。在我们开始构建决策树之前,我们需要准备一些数据。我们将使用一个虚拟的示例数据集来说明决策树的构建过程。在本文中,我们将使用R语言实现决策树分析,并提供相应的源代码。是一个公式对象,用于指定目标变量和预测变量之间的关系。在我们的示例中,我们将使用。决策树模型构建完成后,我们可以使用该模型对新的数据进行预测。首先,我们需要安装并加载R中的相关R语言使用rpart构建决策树模型、为了选择合适的树大小(复杂度)检查决策树对象的cptable内容(树的大小由分裂次数定义、预测误差)、使用plotcp函数可视化决策树复杂度参数与交叉验证错误的关系、选择合适的树大小(复杂度)