Ошибка при попытке получить вероятности класса в пакете каретки R

Я нашел похожие вопросы, но это не помогло решить мою проблему: я использую каретку с методом рейнджера для подбора случайного леса, а затем использую предикат для прогнозирования моих данных оценки. Это работает. Но когда я пытаюсь получить вероятности предсказания, я получаю следующую ошибку:

Ошибка в [.data.frame(out,, obsLevels, drop = FALSE): выбраны неопределенные столбцы

Код (пример)

require(caret)

mtcars$carb <- as.factor(mtcars$carb)

tuneGrid <- expand.grid(mtry = c(10), min.node.size = c(1), splitrule = "extratrees")
rf_model<-train(carb~.,data=mtcars,method="ranger",
                trControl=trainControl(method="none")
                , tuneGrid = tuneGrid
)

predict(rf_model, mtcars, type="prob")

Я удостоверился, что карбонат - фактор, как предложено в другом месте.

Мысли?

1 ответ

Решение

Есть пара вопросов. Во-первых, этот подход требует, чтобы уровни классов фактора следовали соглашению действительных имен переменных R, поэтому первым шагом будет переименование уровней фактора карбюратора, чтобы начать с буквы.

mtcars$carb <- as.factor(paste0("c",mtcars$carb))

Во-вторых, аргумент по умолчанию для classProbs в TrainControl установлен на FALSE, Это должно быть TRUE в твоем случае.

library("caret")

tuneGrid <- expand.grid(mtry = c(10), min.node.size = c(1), splitrule = "extratrees")
rf_model <- train(carb ~ ., data = mtcars, method = "ranger",
              trControl = trainControl(method = "none", classProbs = TRUE),
              tuneGrid = tuneGrid)

classprobs <- predict(rf_model, newdata = mtcars, type = "prob")
Другие вопросы по тегам