如何获得预测的 class 而不是 class 概率?

How to get the predicted class instead of class probabilities?

我使用 caret 包训练了一个随机森林来预测二进制 classification 任务。

library(caret)
set.seed(78)
inTrain <- createDataPartition(disambdata$Response, p=3/4, list = FALSE)
trainSet <- disambdata[inTrain,]
testSet <- disambdata[-inTrain,]
ctrl <- trainControl(method = "repeatedcv", number = 10, repeats = 10)
grid_rf <- expand.grid(.mtry = c(3,5,7,9))
set.seed(78)
m_rf <- train(Response ~ ., data=trainSet, 
          method= "rf", metric = "Kappa", trcontrol=ctrl, tuneGrid = grid_rf)

Response 变量包含值 {Valid, Invalid}。 使用以下我得到测试数据的 class 概率:

pred <- predict.train(m_rf, newdata = testSet, 
                  type="prob", models=m_rf$finalModel)

但是 我有兴趣获得预测的 classValidInvalid 而不是 class 概率 生成混淆矩阵 .

我已经在 predict.train 函数中尝试了参数 type="raw" 但它 returns 是 NAs.

的列表

通过在 predict() 函数中分配 type = "prob" ,您专门要求概率。只需删除它 & 它会提供标签

pred <- predict.train(m_rf, newdata = testSet,models=m_rf$finalModel)

插入符包 (caret_6.0-70) 似乎仍然存在公式界面问题。将公式从 Response ~ . 扩展到明确提及所有预测变量的公式 Response ~ MaxLikelihood + n1 + n2 + count 解决了问题,predict.train(m_rf, newdata=testSet) returns 预测的 class.