我使用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
变量包含值{Valid
,Invalid
}。
使用以下内容,我得到了测试数据的类概率:
pred <- predict.train(m_rf, newdata = testSet,
type="prob", models=m_rf$finalModel)
然而我有兴趣获得预测类即Valid
或Invalid
而不是类概率到生成混淆矩阵
我已经在type="raw"
函数中尝试了参数predict.train
,但它返回了NAs
的列表。
答案 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)
会返回预测的类。