随机森林回归预测r语言

您所在的位置:网站首页 r语言随机森林实例 随机森林回归预测r语言

随机森林回归预测r语言

#随机森林回归预测r语言| 来源: 网络整理| 查看: 265

R是用于统计分析、绘图的语言和操作环境。R是属于GNU系统的一个自由、免费、源代码开放的软件,它是一个用于统计计算和统计制图的优秀工具。本文我们讲讲R语言的决策树和随机森林及回归分析。

【R语言进行数据挖掘】决策树和随机森林

1、使用包party建立决策树

这一节学习使用包party里面的函数ctree()为数据集iris建立一个决策树。属性Sepal.Length(萼片长度)、 Sepal.Width(萼片宽度)、Petal.Length(花瓣长度)以及Petal.Width(花瓣宽度)被用来预测鸢尾花的 Species(种类)。在这个包里面,函数ctree()建立了一个决策树,predict()预测另外一个数据集。

在建立模型之前,iris(鸢尾花)数据集被分为两个子集:训练集(70%)和测试集(30%)。使用随机种子设置固定的随机数,可以使得随机选取的数据是可重复利用的。

观察鸢尾花数据集的结构

str(iris)

设置随机数起点为1234

set.seed(1234)

使用sample函数抽取样本,将数据集中观测值分为两个子集

ind

样本的第一部分为训练集

trainData

样本的第二部分为测试集

testData

加载包party建立一个决策树,并检测预测见过。函数ctree()提供一些参数例如MinSplit, MinBusket, MaxSurrogate 和 MaxDepth用来控制决策树的训练。下面我们将会使用默认的参数设置去建立决策树,至于具体的参数设置可以通过?party查看函数文档。下面的代码中,myFormula公式中的Species(种类)是目标变量,其他变量是独立变量。

library(party)

符号'~'是连接方程或公式左右两边的符号

myFormula

建立决策树

iris_ctree

检测预测值

table(predict(iris_ctree), trainData$Species)

显示结果如下:

由上图可知,setosa(山鸢尾)40观测值全部正确预测,而versicolor(变色鸢尾)有一个观测值被误判为virginica(维吉尼亚鸢尾),virginica(维吉尼亚鸢尾)有3个观测值被误判为versicolor(变色鸢尾)。

打印决策树

print(iris_ctree)

plot(iris_ctree)

plot(iris_ctree, type="simple")

在图1中,每一个叶子的节点的条形图都显示了观测值落入三个品种的概率。在图2中,这些概率以每个叶子结点中的y值表示。例如:结点2里面的标签是 “n=40 y=(1,0,0)”,指的是这一类中一共有40个观测值,并且所有的观测值的类别都属于第一类setosa(山鸢尾)。

接下来,需要使用测试集测试决策树。

在测试集上测试决策树

testPred

table(testPred, testData$Species)

结果如下:

从上图的结果可知,决策树对变色鸢尾和维吉尼亚鸢尾的识别仍然有误判。因此ctree()现在的版本并不能很好的处理部分属性不明确的值,在实例中既有可能被判到左子树,有时候也会被判到右子树上。

2、使用包rpart建立决策树

rpart这个包在本节中被用来在'bodyfat'这个数据集的基础上建立决策树。函数raprt()可以建立一个决策树,并且可以选择最小误差的预测。然后利用该决策树使用predict()预测另外一个数据集。

首先,加载bodyfat这个数据集,并查看它的一些属性。

data("bodyfat", package = "TH.data")

dim(bodyfat)

attributes(bodyfat)

bodyfat[1:5,]

跟第1节一样,将数据集分为训练集和测试集,并根据训练集建立决策树。

set.seed(1234)

ind

bodyfat.train

bodyfat.test

library(rpart)

编写公式myFormula

myFormula

训练决策树

bodyfat_rpart

control = rpart.control(minsplit = 10))

画决策树

plot(bodyfat_rpart)

添加文本标签

text(bodyfat_rpart, use.n=T)

结果如下图所示:

选择预测误差最小值的预测树,从而优化模型。

opt

cp

bodyfat_prune

plot(bodyfat_rpart)

text(bodyfat_rpart, use.n=T)

优化后的决策树如下:

对比结果就会发现,优化模型后,就是将hipcirc



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3