尝试在R的插入符包中获取类概率时出错

问题描述 投票:0回答:1

我发现了与此类似的问题,但并没有解决我的问题:我使用插入方法的插入符合随机森林,然后使用预测来预测我的评估数据。这有效。但是当我试图获得预测概率时,我得到以下错误:

[.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")

我确保碳水化合物是其他地方建议的因素。

思考?

r r-caret
1个回答
4
投票

有几个问题。首先,这种方法要求因子的类级别遵循有效R变量名称的约定,因此将碳水化合物因子的级别重命名为以字母开头是第一步

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

其次,TrainControl中classProbs的默认参数设置为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")
© www.soinside.com 2019 - 2024. All rights reserved.