使用随机森林进行装袋,即使使用MASS:波士顿数据集也找不到对象

时间:2016-09-11 00:43:58

标签: r random-forest

我试图在James等人的“使用R中的应用程序进行统计学习的介绍”的教科书示例中继续学习,并且我遇到了一条我不理解的错误信息。

 library(MASS)
 library(randomForest)
 set.seed(1)
 bag.boston=randomForest(medv~.,data=Boston, subset=train,mtry=13, importance=TRUE)
 yhat.bag = predict(bag.boston,newdata=Boston[-train,])

使用最后一行我收到错误消息

  

eval(expr,envir,enclos)中的错误:找不到对象'age'

为什么我收到此错误消息,如何阻止它?我看到这里有一个类似的问题: Error in running randomForest : object not found 。但在这种情况下,OP试图输入矩阵而不是数据帧作为其原始数据集,无论如何都是在randomForest调用,而不是预测调用。

这个人randomForest in R object not found error也有类似的问题,但在文本文件中追溯到非ascii字符,我很确定这不是这个数据集的特征。

也许我应该在预测函数中为“newdata”替换“data”这个词,但这似乎产生了与我在文本示例中看到的完全不同的答案。

还有其他想法吗?

1 个答案:

答案 0 :(得分:2)

我找到了你所指的那本书的副本,作者和USC已经published online

您遗漏了运行此代码块所需的代码。在本书中,代码片段来自于在许多页面和代码块之间分解的文件/ R会话,并且取决于正在运行的早期代码,例如创建train。当该书中包含必要的代码时,它运行正常。你得到的错误无法复制。

library(MASS)
library(randomForest)
library(tree)
set.seed(1)
train = sample(1:nrow(Boston), nrow(Boston)/2)

bag.boston=randomForest(medv~.,data=Boston, subset=train,mtry=13, importance=TRUE)
yhat.bag = predict(bag.boston,newdata=Boston[-train,])

summary(yhat.bag)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  7.965  17.050  21.330  22.700  25.530  48.690