randomForest中的响应变量

时间:2015-09-18 13:19:24

标签: r random-forest

我的问题是 - 如何参数化RandomForest。让我给出工作代码。

以下工作正常

library(randomForest) # load the package
data(iris) # load data
fit <- randomForest(Species~., data=iris) # fit model
predictions <- predict(fit, iris[,1:4]) # make predictions

当line3替换为

fit <- randomForest(iris[,5]~., data=iris) # fit model

然后第4行(预测)给出错误Error in eval(expr, envir, enclos) : object 'Species' not found

1 个答案:

答案 0 :(得分:0)

您可以使用randomForest函数的默认S3方法执行此操作:

而不是:

fit <- randomForest(iris[,5]~., data=iris) # fit model

只需使用:

fit2 <- randomForest(iris[-5], iris$Species , data=iris) # fit model
#or
fit2 <- randomForest(iris[-5], iris[,5] , data=iris) # fit model

这样你可以参数化它。第一个参数是没有Species列的data.frame(即没有响应数据的data.frame),第二个参数是响应向量,即Species。

> fit

Call:
 randomForest(formula = Species ~ ., data = iris) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 2

        OOB estimate of  error rate: 4%
Confusion matrix:
           setosa versicolor virginica class.error
setosa         50          0         0        0.00
versicolor      0         47         3        0.06
virginica       0          3        47        0.06

> fit2

Call:
 randomForest(x = iris[-5], y = iris$Species, data = iris) 
               Type of random forest: classification
                     Number of trees: 500
No. of variables tried at each split: 2

        OOB estimate of  error rate: 4%
Confusion matrix:
           setosa versicolor virginica class.error
setosa         50          0         0        0.00
versicolor      0         47         3        0.06
virginica       0          3        47        0.06