如何获得预测班级而不是班级概率?

时间:2016-07-29 04:26:25

标签: r random-forest r-caret confusion-matrix

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

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变量包含值{ValidInvalid}。 使用以下内容,我得到了测试数据的类概率:

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

然而我有兴趣获得预测类ValidInvalid 而不是类概率生成混淆矩阵

我已经在type="raw"函数中尝试了参数predict.train,但它返回了NAs的列表。

2 个答案:

答案 0 :(得分:3)

通过分配type =&#34; prob&#34;在predict()函数中,您具体要求概率。只需删除它&amp;它会提供标签

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

答案 1 :(得分:0)

似乎插入符号包(caret_6.0-70)仍然存在公式接口问题。将公式从Response ~ .扩展为明确提及所有预测变量的公式Response ~ MaxLikelihood + n1 + n2 + count可以解决问题,predict.train(m_rf, newdata=testSet)会返回预测的类。