我有许多大的随机森林分类模型(每个运行时间约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 回答
如果您尝试确定多列的最大值,使用与
iris.prob
相同的通用格式,我会尝试从每行中找到最大值并返回colname .从another thread获得了确切的用法,所以如果这不起作用,你可以尝试另一个响应
iris.prob应包含分类结果,并将一个观察值分类在一个类别中 . 所以你只需要提取每行最大值的colname .
例如:iris.resp2 = colnames(iris.prob)[apply(iris.prob,1,which.max)]
iris.resp2 == as.character(iris.resp)应该每次都返回TRUE