2016-07-29 102 views
0

我已经使用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,而不是阶级概率产生混淆矩阵

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

回答

0

似乎插入符包(caret_6.0-70)仍然有问题,用式接口。将公式从Response ~ .扩展到明确提及像这样的所有预测变量的公式,即可解决此问题,predict.train(m_rf, newdata=testSet)返回预测的类。

+0

如果它是一个错误,请在github的脱字符页面上报告它。 – phiver

+1

@phiver,是的,我打算报告它,因为它报道的包装符号的旧版本之一。版本的版本说明(6.0-70)提到此问题已得到解决。无论如何,我会报告在github上的错误 –

3

通过在predict()函数中指定type =“prob”,您特别要求概率。只是将其删除&它将提供标签

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

不幸的是,它不适合我,删除'type = prob'没有任何好处。 'pred'接收'NAs' –

相关问题