2017-06-17 4 views
1

Wie kann ich Parameter an die Caretzusammenfassungsfunktionen übergeben?So übergeben Sie Parameter an die Caretzusammenfassungsfunktionen

Zum Beispiel hat die twoClassSummary-Funktion von caret die folgende Signatur:. twoClassSummary (Daten, lev = NULL, Modell = NULL)

Der Parameter lev Spezifitäten der Faktor-Ebene Ich bin interessiert Jetzt Ich möchte darauf hinweisen, dass mich die Zusammenfassung für die Faktorstufe "falsch" interessiert. Etwas wie

trainControl(summary=twoClassSummary(lev="false")) 

funktioniert nicht. Wie kann ich Parameter an die Zusammenfassungsfunktion übergeben? Vielen Dank!

+0

versuche bei der Beschreibung des Problems um genauer zu sein. Warum funktioniert es nicht? Was ist die Fehlermeldung? Was hast du versucht, das zu lösen? – joha

Antwort

1

Ich glaube, dass es derzeit nicht möglich ist, dies auf eine direkte Art und Weise zu tun, da zusätzliche Argumente zum Trainieren (...) nicht an twoClassSummary() weitergegeben werden. Sie können Trick verwenden, um es zu arbeiten, und Ihre Idee ist ziemlich nah. Erstellen Sie eine benutzerdefinierte Funktion, die die Werte von der Einfügemarke an die Zusammenfassungsfunktion übergibt, sie jedoch bearbeitet oder sie dabei ersetzt.

trainControl(
    summaryFunction = function(...) empTwoClassSummary(..., lev = c("your_other_class","false")) 

Sie können das gleiche tun zum Beispiel in zusätzliche Parameter zu einer benutzerdefinierten Auswertungsfunktion, weitergeben müssen:

trainControl(
    summaryFunction = function(...) customTwoClassSummary(..., weights = c(0.1, 0.2), orgData = my_data) 

nicht auf die Frage: In Ihrem Beispiel, stellen Sie sicher, dass die Ebene, die Sie wollen sein, der Zielpegel ist, das zweite Vektorelement in lev, da twoClassSummary() diese in diesen Zeilen standardmäßig annimmt:

lvls <- levels(data$obs) 
data$y = as.numeric(data$obs == lev[2]) 
Verwandte Themen