2016-09-11 30 views
-2

我试图从詹姆斯等人的“用R中的统计学习与应用程序的介绍”的教科书示例中,我正在运行到一个错误信息我不明白。与随机森林套袋,甚至与MASS的对象甚至没有找到:波士顿数据集

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

错误(表达式,ENVIR,enclos):对象 '年龄' 未找到

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

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

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

还有其他想法吗?

回答

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 
+1

呵呵。是的,现在为我工作,我重新启动了一切,并运行你提供的代码。请注意,tree.boston行对于函数运行不是必需的。 – ohnoplus