【问题标题】:Error when trying to get class probabilities in R's caret package尝试在 R 的插入符号包中获取类概率时出错
【发布时间】:2018-01-09 14:39:52
【问题描述】:

我发现了与此类似的问题,但没有解决我的问题:我使用插入符号和 ranger 方法来拟合随机森林,然后使用 predict 来预测我的评估数据。这行得通。但是当我尝试获取预测概率时,出现以下错误:

[.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】:

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

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

    【讨论】:

    • 第一个是我的明显错误,我的实际数据集具有有效的因子名称。第二个对我来说是新的并修复了它。谢谢!
    猜你喜欢
    • 2013-08-26
    • 1970-01-01
    • 1970-01-01
    • 2014-07-07
    • 2015-08-18
    • 2018-10-15
    • 2011-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多