首页 文章

如何将随机森林预测概率转换为单一的分类响应?

提问于
浏览
0

我有许多大的随机森林分类模型(每个运行时间约60分钟),用于使用type =“prob”选项预测栅格 . 我很满意光栅输出(每个x类作为光栅堆栈的概率) . 但是,我想要一种简单的方法来将这些概率(具有x层的光栅堆栈,其中x是类的数量)转换为简单的一层分类(即仅获胜者,没有概率) . 这相当于type =“response” .

这是一个简单的例子(不是栅格,但仍然适用):

library(randomForest)
data(iris)
set.seed(111)
ind <- sample(2, nrow(iris), replace = TRUE, prob=c(0.8, 0.2))
iris.rf <- randomForest(Species ~ ., data=iris[ind == 1,])
iris.prob <- predict(iris.rf, type="prob")
iris.resp <- predict(iris.rf, type="response")

使用iris.prob对象获取iris.resp的等效输出而不重新运行随机林的最有效方法是什么(在我的情况下使用许多大型栅格,需要花费太多时间)?

提前致谢

2 回答

  • 1

    如果您尝试确定多列的最大值,使用与 iris.prob 相同的通用格式,我会尝试从每行中找到最大值并返回colname .

    colnames(iris.prob)[max.col(iris.prob,ties.method="first")]
    

    another thread获得了确切的用法,所以如果这不起作用,你可以尝试另一个响应

  • 1

    iris.prob应包含分类结果,并将一个观察值分类在一个类别中 . 所以你只需要提取每行最大值的colname .

    例如:iris.resp2 = colnames(iris.prob)[apply(iris.prob,1,which.max)]

    iris.resp2 == as.character(iris.resp)应该每次都返回TRUE

相关问题