1

我正在使用caret包在训练数据集上训练随机森林模型。我使用了 10 倍交叉验证来获得一个对象 say randomForestFit。现在我想用这个对象来预测新的数据集说test_data。我还想获得各自的班级概率。我该怎么做?

我一直在使用extractProb如下功能:

extractProb(randomForestFit, textX = test_data_predictors, testY = test_data_labels)

但它给了我意想不到的结果。

4

1 回答 1

2

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)

编辑:

是的,将使用预处理。从文档中:

这些处理步骤将在使用 predict.train、extractPrediction 或 extractProbs 生成的任何预测期间应用(请参阅本文档后面的详细信息)。预处理不会应用于直接使用 object$finalModel 对象的预测。

于 2015-05-29T17:08:52.393 回答