2016-07-29 106 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' –

相關問題