2015-04-14 11 views
14

Sto provando a creare un modello predittivo in caret utilizzando PCA come pre-elaborazione. Il pre-trattamento sarebbe il seguente:R/caret: passare gli argomenti di preelaborazione pca per la formazione()

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

E 'possibile passare l'argomento thresh direttamente alla funzione di accento circonflesso train()? Ho provato quanto segue, ma non funziona:

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

Se no, come posso passare i separati preProc risultati alla funzione train()?

+2

Questa è una grande domanda. Grazie per averlo chiesto. – ahoffer

risposta

21

Come per la documentazione, specificate gli argomenti di pre-elaborazione aggiuntive con 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. 
... 

Dal momento che il set di dati non è riproducibile, diamo un'occhiata a un esempio. Userò il set di dati Sonar da mlbench e useremo l'algoritmo pls solo per divertimento.

library(caret) 
library(mlbench) 

data(Sonar) 

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

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

Anche se la documentazione non è la lettura più eccitante, assicurarsi di provare a superarla. Gli autori di pacchetti lavorano duramente per creare documentazione e ci sono molte meraviglie da scoprire.

+0

Proprio quello che stavo cercando. –