我正在使用caret
包来训练训练数据集上的随机森林模型。我使用了10倍交叉验证来获得一个对象randomForestFit
。现在我想使用此对象来预测新数据集test_data
。我也想得到各自的班级概率。我该怎么做?
我一直在使用extractProb
函数,如下所示:
extractProb(randomForestFit, textX = test_data_predictors, testY = test_data_labels)
但它给了我意想不到的结果。
答案 0 :(得分:1)
从extractProb
帮助页面示例中,您需要将模型包装在列表中:
knnFit <- train(Species ~ ., data = iris, method = "knn",
trControl = trainControl(method = "cv"))
rdaFit <- train(Species ~ ., data = iris, method = "rda",
trControl = trainControl(method = "cv"))
predict(knnFit)
predict(knnFit, type = "prob")
bothModels <- list(knn = knnFit,
tree = rdaFit)
predict(bothModels)
extractPrediction(bothModels, testX = iris[1:10, -5])
extractProb(bothModels, testX = iris[1:10, -5])
所以以下内容应该有效:
extractProb(list(randomForestFit), textX = test_data_predictors, testY = test_data_labels)
修改强>
是的,将使用预处理。来自documentation:
这些处理步骤将在任何预测期间应用 使用predict.train,extractPrediction或extractProbs生成(参见 本文后面的详细信息)。预处理不会 应用于直接使用对象$ finalModel对象的预测。