首页 文章

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

提问于
浏览
0

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

  • center:从值中减去均值 .

  • scale:按标准差除以值 .

使用所有非虚拟变量创建一个数组,计算每个变量的平均值和SD,居中并缩放所有值,然后将该数组与另一个包含所有虚拟变量的数组连接起来,产生 new_array 数组和然后像这样训练模型?或者这不起作用?

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

Note :我已经在CrossValidated中提出了这个问题,但由于它也与StackOverflow有关,我在这里再问一次 .

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

[1] Dummy variables and preProcess

1 回答

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

相关问题