用随机森林装袋,即使使用 MASS:Boston 数据集也找不到对象

Bagging with random forest, object not found even with MASS:Boston data set

我正在尝试按照 James 等人 "An introduction to statistical Learning with Applications in 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,])

最后一行我收到错误消息

Error in eval(expr, envir, enclos) : object 'age' not found

为什么我会收到此错误消息,我该如何预防?我看到这里问了一个类似的问题: .但在那种情况下,OP 试图输入矩阵而不是数据框作为其原始数据集,无论如何这是在 randomForest 调用中,而不是预测调用中。

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

也许我应该用单词 "data" 代替预测函数中的 "newdata",但这似乎会产生与我在文本示例中看到的完全不同的答案。

还有其他想法吗?

我找到了你所指的那本书的副本,作者和南加州大学已经 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