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函数可视化决策树复杂度参数与交叉验证错误的关系、选择合适的树大小(复杂度)