2016-07-29 4 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) 

私はに予測クラスすなわちValidまたはInvalidの代わりに、クラス確率を得ることに興味を持っては混同行列を生成します。

私は既に、の引数をpredict.train関数で試しましたが、NAsのリストを返します。

答えて

0

を提供します&削除キャレットパッケージ(caret_6.0-70)はまだ式インタフェースの問題を持っているようです。 Response ~ .の式を展開すると、このようなすべての予測子が明示的に記述されています。Response ~ MaxLikelihood + n1 + n2 + countは問題を解決し、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'を受け取ります。 –

関連する問題