仅预处理(中心和比例)特定变量(数字变量)

preprocessing (center and scale) only specific variables (numeric variables)

我有一个由数值和非数值变量组成的数据框。我正在尝试根据所有其他变量拟合预测我的变量“风险”的逻辑回归模型,使用 6 折交叉验证优化 AUC。 但是,我想将所有数值解释变量居中并缩放。我的代码没有引发任何错误或警告,但不知何故我无法弄清楚如何通过 preProcess(或以其他方式)告诉 train() 只是居中和缩放我的数值变量。

代码如下:

test <- train(risk ~ .,
              method = "glm",
              data = df,
              family = binomial(link = "logit"),
              preProcess = c("center", "scale"),
              trControl = trainControl(method = "cv",
                                       number = 6,
                                       classProbs = TRUE,
                                       summaryFunction = prSummary),
              metric = "AUC")

您可以尝试先预处理原始 df 中的所有数值变量,然后在缩放后的 df

上应用 train 函数
library(dplyr)
library(caret)

df <- df %>%
        dplyr::mutate_if(is.numeric, scale)

test <- train(risk ~ .,
              method = "glm",
              data = df,
              family = binomial(link = "logit"),
              trControl = trainControl(method = "cv",
                                       number = 6,
                                       classProbs = TRUE,
                                       summaryFunction = prSummary),
              metric = "AUC")