R/caret: Передайте аргументы предварительной обработки для обучения()

Я пытаюсь создать прогностическую модель в карете с использованием PCA в качестве предварительной обработки. Предварительная обработка будет следующей:

preProc <- preProcess(IL_train[,-1], method="pca", thresh = 0.8)

Можно ли передать аргумент thresh непосредственно в функцию каретки train()? Я пробовал следующее, но он не работает:

modelFit_pp <- train(IL_train$diagnosis ~ . , preProcess="pca",
                            thresh= 0.8, method="glm", data=IL_train)

Если нет, как передать отдельные результаты preProc в функцию train()?

Ответы

Ответ 1

В соответствии с документацией вы указываете дополнительные аргументы предварительной обработки с помощью trainControl

?trainControl

...
preProcOptions  

A list of options to pass to preProcess. The type of pre-processing 
(e.g. center, scaling etc) is passed in via the preProc option in train.
...

Поскольку ваш набор данных не воспроизводится, взгляните на пример. Я буду использовать набор данных Sonar от mlbench и использовать алгоритм pls только для удовольствия.

library(caret)
library(mlbench)

data(Sonar)

ctrl <- trainControl(preProcOptions = list(thresh = 0.95))

mod <- train(Class ~ ., 
             data = Sonar, 
              method = "pls",
              trControl = ctrl)

Несмотря на то, что документация не самая интересная, обязательно попробуйте пройти ее. Авторы пакетов много трудятся, чтобы создать документацию, и есть много чудес, которые можно найти внутри.