【问题标题】:R caret preproc only part of the dataset variables and train the modelR caret preproc 仅部分数据集变量并训练模型
【发布时间】:2017-01-14 21:53:43
【问题描述】:

我有一个包含一些虚拟变量 [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 中问过这个问题,但由于它也与 StackOverflow 有关,所以我在这里再问一次。

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

[1]Dummy variables and preProcess

【问题讨论】:

    标签: r r-caret


    【解决方案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)
    

    【讨论】:

      猜你喜欢
      • 2021-09-10
      • 2020-11-25
      • 2016-07-08
      • 1970-01-01
      • 1970-01-01
      • 2016-06-13
      • 2016-03-09
      • 2020-10-26
      • 1970-01-01
      相关资源
      最近更新 更多