在拟合模型时我更喜欢使用插入符号,因为它的相对速度和预处理功能。然而,我对它如何做出预测有点困惑。当比较直接从训练对象做出的预测和从提取的最终模型做出的预测时,我看到了非常不同的数字。来自火车对象的预测似乎更准确。
library(caret)
library(ranger)
x1 <- rnorm(100)
x2 <- rbeta(100, 1, 1)
y <- 2*x1 + x2 + 5*x1*x2
data <- data.frame(x1, x2, y)
fitRanger <- train(y ~ x1 + x2, data = data,
method = 'ranger',
tuneLength = 1,
preProcess = c('knnImpute', 'center', 'scale'))
predict.data <- data.frame(x1 = rnorm(10), x2 = rbeta(10, 1, 1))
prediction1 <- predict(fitRanger, newdata = predict.data)
prediction2 <- predict(fitRanger$finalModel, data = predict.data)$prediction
results <- data.frame(prediction1, prediction2)
results
我确信这与我如何预处理火车对象中的数据有关,但即使我预处理测试数据并使用 Ranger 模型进行预测,值也是不同的
predict.data.processed <- predict.data %>%
preProcess(method = c('knnImpute',
'center',
'scale')) %>% .$data
results3 <- predict(fitRanger$finalModel, data = predict.data.processed)$prediction
results <- cbind(results, results3)
results
我想从游侠模型中的每棵树中提取预测,但在插入符中无法做到这一点。有什么想法吗?