随机森林回归预测r语言 |
您所在的位置:网站首页 › r语言随机森林实例 › 随机森林回归预测r语言 |
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 |