R中的类概率randomForest

poi*_*rez 1 r machine-learning random-forest

我试图获得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" ...
Run Code Online (Sandbox Code Playgroud)

MrF*_*ick 5

首先,在发布代码时,请确保它是可重现的 ; 理想情况下,我们应该能够将它复制/粘贴到我们自己的R会话中,以获得与您相同的错误/问题.发布一个str()data.set没有帮助.通常,您可以在相关功能的帮助页面中找到简单的示例.以下示例来自?randomForest

set.seed(71)
iris.rf <- randomForest(Species ~ ., data=iris, importance=TRUE,
                        proximity=TRUE)
Run Code Online (Sandbox Code Playgroud)

因为class(iris.rf)==c("randomForest.formula", "randomForest"),当你打电话时predict(iris.rf),你实际上正在打电话predict.randomForest().帮助页面?predict.randomForest提供了所有各种参数的文档,包括type=参数.默认情况下,它只返回预测的类,但您可以返回预测的概率type="prob")

predict(iris.rf, type="prob")
Run Code Online (Sandbox Code Playgroud)

返回

         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 ....
Run Code Online (Sandbox Code Playgroud)