繁体   English   中英

R caret preproc 仅部分数据集变量并训练模型

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

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

  • 中心:从值中减去平均值。
  • scale:将值除以标准偏差。

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

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

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

[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)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM