R caret仅预处理部分数据集变量并训练模型

R caret preproc only part of the dataset variables and train the model

我有一个包含一些虚拟变量 [0] 的训练集,我不想 preProc=c("center","scale") 它们,但我想 preProc=c("center","scale") 所有非虚拟变量以便将它们标准化这里[1]。因此,中心和比例选项的作用如下:

创建一个包含所有非虚拟变量的数组是否有意义,计算每个变量的平均值和标准差,对所有值进行居中和缩放,然后将该数组与另一个包含所有虚拟变量的数组连接起来生成 new_array 数组然后像这样训练模型?或者这行不通?

ctrl <- trainControl(method = "repeatedcv", number=10, repeats=3)
knn_model <- train (Class ~ ., data=new_array, method="knn", trControl=ctrl)

注意:我已经在 CrossValidated 中问过这个问题,但由于它也与 Whosebug 相关,所以我在这里再问一次。

[0] https://topepo.github.io/caret/pre-processing.html#dummy

[1]

您可以这样做以将所有内容都包含在插入符号中

假设您有一个名为 DF 的 data.frame,其中 1:5 中的列是数字,6:10 中的列是阶乘。您可以执行以下操作:

PreProcovCenter <- preProcess(DF[,1:5])
preProcovDummy <- dummyVars(DF[,6:10])

DF[,1:5] <- predict(PreProcovCenter, DF[,1:5])
DFDummy <- predict(PreProcovDummy, DF[,6:10])

DF <- cbind(DF, DFDummy)

最后:

knn_model <- train (Class ~ ., data=DF, method="knn", trControl=ctrl)