R插入符只预处理部分数据集变量并训练模型

时间:2017-01-14 21:53:44

标签: r r-caret

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

  • center:从值中减去均值。
  • 比例:按标准差划分值。

使用所有非虚拟变量创建数组,计算每个变量的平均值和SD,居中并缩放所有值,然后将此数组与包含所有虚拟变量的另一个数组连接起来是否有意义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] Dummy variables and preProcess

1 个答案:

答案 0 :(得分:0)

你可以这样做,以便在插入符号中包含所有内容

假设您有一个名为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)
相关问题