如何使用经过培训的插入符号对象来预测新数据(培训时不使用)?

时间:2015-05-29 17:02:56

标签: r r-caret ensemble-learning

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

我一直在使用extractProb函数,如下所示:

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

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

1 个答案:

答案 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对象的预测。