随机森林中的响应变量

3
我的问题是如何参数化随机森林。让我给出一个工作代码。
以下代码可以正常工作。
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

然后第四行(预测部分)报错:Error in eval(expr, envir, enclos) : object 'Species' not found

1个回答

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列的数据框(即没有响应数据的数据框),第二个参数是响应向量,即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

@Shiv 非常欢迎你!我很高兴能帮到你 :)。我还建议你看看这里,了解如何接受对你有用的答案(通过点击答案旁边的勾号图标)。接受答案并非强制性的,但鼓励这样做,因为许多遇到相同问题的人都可以从中受益。它还会给你和回答者声誉点,使你可以在stackoverflow上使用更多功能(特权)。 - LyzandeR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接