簡體   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