使用随机森林进行装袋,即使使用MASS:Boston数据集也找不到目标



我正在尝试遵循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, enclosures)出错:对象'age'未找到

为什么我得到这个错误信息,我如何防止它?我看到这里有人问了一个类似的问题:运行随机森林时出错:找不到对象。但在这种情况下,OP试图输入一个矩阵而不是一个数据帧作为他们的原始数据集,无论如何,这是在randomForest调用,而不是预测调用。

这个人randomForest在R对象中没有发现错误也有类似的问题,但在他们的文本文件中跟踪到非ascii字符,我很确定这不是这个数据集的特征。

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

还有其他想法吗?

我找到了一本你提到的那本书,这本书已经由作者和南加州大学在网上出版了。

您遗漏了运行此代码块所需的代码。在这本书中,代码片段来自一个文件/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

最新更新