代码之家  ›  专栏  ›  技术社区  ›  Imran Ali

如何获得预测类而不是类概率?

  •  2
  • Imran Ali  · 技术社区  · 10 年前

    我训练了一个随机森林使用 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 变量包含值{ Valid , Invalid }. 使用以下方法,我得到了测试数据的类概率:

    pred <- predict.train(m_rf, newdata = testSet, 
                      type="prob", models=m_rf$finalModel)
    

    然而 我对获得预测班级感兴趣 有效的 无效的 而不是类概率 生成混淆矩阵 .

    我已经试过了 type="raw" 在中 predict.train NAs .

    2 回复  |  直到 10 年前
        1
  •  3
  •   wololo    10 年前

    通过在predict()函数中赋值type=“prob”,您可以明确地询问概率。只需将其移除;它将提供标签

    pred <- predict.train(m_rf, newdata = testSet,models=m_rf$finalModel)
    
        2
  •  0
  •   Imran Ali    10 年前

    插入符号包(caret_6.0-70)似乎仍然存在公式接口问题。正在从展开公式 Response ~ . 对于明确提到所有类似预测的人 Response ~ MaxLikelihood + n1 + n2 + count 解决问题并 predict.train(m_rf, newdata=testSet)