2015-04-14 8 views
14

Ich versuche, ein Vorhersagemodell in Caret mit PCA als Vorverarbeitung zu bauen. Die Vorverarbeitung würde wie folgt aussehen:R/Caret: Pass Preprocessing Argumente zu trainieren()

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

Ist es möglich, das thresh Argument direkt an den caret train() Funktion zu übergeben? Ich habe folgendes versucht, aber es funktioniert nicht:

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

Wenn nicht, wie kann ich die einzelnen preProc Ergebnisse der train() Funktion übergeben?

+2

Das ist eine gute Frage. Danke, dass du es fragst. – ahoffer

Antwort

21

Gemäß der Dokumentation, geben Sie zusätzliche Vorverarbeitung Argumente mit 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. 
... 

Da Ihre Datenmenge nicht reproduzierbar ist, ist ein Beispiel betrachten lassen. Ich werde den Sonar Datensatz von mlbench verwenden und den Algorithmus nur zum Spaß verwenden.

library(caret) 
library(mlbench) 

data(Sonar) 

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

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

Obwohl Dokumentation nicht die spannendste Lektüre ist, stellen Sie sicher, dass Sie versuchen, es zu durchlaufen. Paketautoren arbeiten hart daran, Dokumentation zu erstellen, und es gibt viele Wunder, die darin zu finden sind.

+0

Genau das, was ich gesucht habe. –