【问题标题】:Response variable in randomForestrandomForest 中的响应变量
【发布时间】:2015-09-18 21:55:46
【问题描述】:

我的问题是 - 如何参数化 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

【问题讨论】:

    标签: r random-forest


    【解决方案1】:

    您可以使用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
    

    【讨论】:

    • @Shiv 不客气!我很高兴它有帮助:)。我还建议您查看here,了解如何接受对您有用的答案(通过单击答案旁边的勾号图标)。接受答案不是强制性的,但是当它对您有所帮助时,我们鼓励您接受,因为更多有相同问题的人可以从看到它中受益。它还为您和回答的人提供声誉积分,让您可以在 stackoverflow 上使用更多功能(特权)。
    猜你喜欢
    • 2016-03-07
    • 2015-07-25
    • 2015-11-10
    • 2018-05-16
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2016-10-16
    相关资源
    最近更新 更多