欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

决策树分析

程序员文章站 2022-05-21 23:29:55
...

使用分类树的判别
(目标变量是分类变量的判别问题)
首先通过data()函数读入数据,并通过str()函数确认其结构。

> data(Titanic)
> str(Titanic)
> Titanic[,1,2,]
\\表示第2个变量显示时为第1水平,第3个变量显示时为第2水平

然后绘制马赛克图,将交叉统计结果可视化。

> mosaicplot(Titanic[,1,2,],color=T)

可以使用rpart程序包进行决策树分析。由于该程序包以数据框类型作为对象,因此我们使用epitools程序包的expand.table()函数把刚才统计的泰坦尼克号数据转换成数据框,然后再进行分析。

> install.packages("epitools")
> library(epitools)
> Titanic.df <- expand.table(Titanic)
> library(rpart)
> Titanic.tree <- rpart(Survived~.,data=Titanic.df,
+		method="class")
\\rpart中的第1个参数是formula
> summary(Titanic.tree)
\\记录条数(n),各分割数(nsplit)所对应的复杂性参数(CP),变量的显著性,其后是各个节点的期望损失,分割后的记录条数,以及用下一个变量来分割后的改善等。

我们用partykit程序包进行可视化。不过,需要提前通过as.party()函数把刚才的结果转换成party形式。

> install.package("partykit")
> library(partykit)
> plot(as.party(Titanic.tree))
\\另外通过plotcp()函数来画图:
> plotcp(Titanic.tree)
\\关于数值的细节,可以从summary()函数的结果中读取:
> Titanic.tree2 <- rpart(Survived~.,data=Titanic.df,
+						method="class",cp=0.083)
> summary(Titanic.tree2)
> plot(as.party(Titanic.tree2))

使用回归树的预测。
(目标变量为数值变量时的预测问题)
首先读入数据:

> library(ggplot2)
> data(diamonds)

由于数据量很大,因此要通过subset()函数缩小范围后查看数据。当书写成x %in% c(a,b,c)的形式时,如果x是a、b、c中的一个,则返回TRUE,则返回FALSE。

> diamonds2 <- subset(diamonds,subset=
+						carat >= 1.5 & carat < 2 &
+						clarity %in% c("I1","SI2"))
>boxplot(diamonds2$price)
\\使用箱型图或直方图来观察分布

接下来,使用rpart()函数,从carat,cut,color以及clarity这4个方面来解释price。由于目标变量是数值变量,因此是把method参数指定为anova。

> str(diamonds)
> diamonds.tree <- rpart(formula=price~carat+cut+color+clarity,
							data=diamonds,method="anova")
\\然后绘制结果数据的树结构
> plot(as.party(diamonds.tree))

这里和刚才的区别就是,由于解释变量包含了数值变量carat,因此将该变量作为基准值来分类;此外,由于目标变量为数值变量,因此和分类树中使用带状图显示分类变量的比例不同,这里使用箱型图来显示数值变量的分布。
最后,执行预测。把原数据前5万条作为训练集,剩下的作为测试数据。根据计算结果,用predict()函数预测测试数据。这里使用head()函数只显示前几行。

> train <- diamonds[1:50000,]
> test <- diamonds[50001:nrow(diamonds),]
> diamonds.tree2 <- rpart(
+		   formula=price~carat+cut+color+clarity,
+	       data=train,method="anova",cp=0.078)
> p <-predict(diamonds.tree2,newdata=test)
> head(p)
相关标签: 决策树分析

上一篇: 决策树实战

下一篇: 决策树