如何获得预测的 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)
但是 我有兴趣获得预测的 class 即 Valid
或 Invalid
而不是 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.
我使用 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)
但是 我有兴趣获得预测的 class 即 Valid
或 Invalid
而不是 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.