在下面的示例中,当caret::train函数使用公式(y〜x)调用时生成模型时,predict函数会产生错误。如果使用x,y规范生成模型,则predict函数可以正常工作。为什么会这样?应该使用x,y规范吗?直到现在,我认为这仅仅是基于用户偏好?有没有办法使predict函数与公式规范一起工作?
我曾以为模型可能因使用因子变量而不同。然而,这些模型似乎产生相同的回归方程式。在样本内预测中没有任何差异。
我曾以为模型可能因使用因子变量而不同。然而,这些模型似乎产生相同的回归方程式。在样本内预测中没有任何差异。
library(ggplot2)
library(caret)
data("diamonds")
set.seed(42)
trainIndex <- createDataPartition(diamonds$price, p=0.8, list = FALSE)
train <- diamonds[trainIndex,]
test <- diamonds[-trainIndex,]
lm_formula <- train(
price ~ ., train,
method = "lm",
trControl=trainControl(method="none")
)
lm_xy <- train(y = train$price,
x = train[,-which(colnames(train)=="price")],
method = "lm",
trControl=trainControl(method="none")
)
# the following generates the error shown beneath it
pred_formula <- predict(lm_formula$finalModel,test)
# Error in eval(predvars, data, env) : object 'cut.L' not found
pred_xy <- predict(lm_xy$finalModel,test)
# The following produces zero indicating the in-sample fits are identical
sum((lm_formula$finalModel$fitted.values-lm_xy$finalModel$fitted.values)^2)