我试图获得randomForest的二进制分类的类概率。我正在努力获得正确的语法。我试图阅读帮助文件,但我没有找到答案。有什么想法吗?
> str(training)
'data.frame': 160051 obs. of 5 variables:
$ repeater : Factor w/ 2 levels "FALSE","TRUE": 1 1 1 1 1 1 1 1 1 1 ...
$ offervalue : num 0.75 0.75 1.5 0.75 1.25 1.25 1 0.75 0.75 0.75 ...
$ has_bought_brand : Factor w/ 2 levels "FALSE","TRUE": 1 1 2 1 1 1 2 1 1 1 ...
$ has_bought_company : Factor w/ 2 levels "FALSE","TRUE": 1 1 2 1 2 2 2 2 1 1 ...
$ has_bought_category: Factor w/ 2 levels "FALSE","TRUE": 2 1 1 1 2 2 2 1 1 1 ...
> model <- randomForest(repeater ~ offervalue + has_bought_brand + has_bought_company + has_bought_category, training, ntree=50)
> testPrediction <- predict(model, testing)
> str(testPrediction)
Factor w/ 2 levels "FALSE","TRUE": 1 1 1 1 1 1 1 1 1 1 ...
- attr(*, "names")= chr [1:64020] "4" "5" "11" "12" ...
答案 0 :(得分:5)
首先,在发布代码时,请确保它是reproducible;理想情况下,我们应该能够将它复制/粘贴到我们自己的R会话中,以获得与您相同的错误/问题。发布一个str()
的data.set没有帮助。通常,您可以在相关功能的帮助页面中找到简单的示例。以下示例来自?randomForest
set.seed(71)
iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE,
proximity=TRUE)
自class(iris.rf)==c("randomForest.formula", "randomForest")
起,当您致电predict(iris.rf)
时,您实际上正在呼叫predict.randomForest()
。 ?predict.randomForest
的帮助页面提供了所有各种参数的文档,包括type=
参数。默认情况下,它只返回预测的类,但您可以使用type="prob"
)
predict(iris.rf, type="prob")
返回
setosa versicolor virginica
1 1.000000000 0.000000000 0.000000000
2 1.000000000 0.000000000 0.000000000
3 1.000000000 0.000000000 0.000000000
4 1.000000000 0.000000000 0.000000000
# etc ....