2016-05-17 6 views
4

Ich habe einen Datenrahmen mit einigen Dummy-Variablen, die ich als Trainingssatz für glmnet verwenden möchte.Dummy-Variablen und preProcess

Da ich glmnet verwende, möchte ich die Funktionen mit der preProcess Option in der Caret train Funktion zentrieren und skalieren. Ich möchte nicht, dass diese Transformation auch auf Dummy-Variablen angewendet wird.

Gibt es eine Möglichkeit, die Transformation dieser Variablen zu verhindern?

+1

Gute Frage. Wir haben dasselbe Problem in meiner Gruppe und versuchen, Hacky-Lösungen zu vermeiden. Ich werde Sie auf dem Laufenden halten, falls etwas herauskommt. –

+1

AFAIK ist dies noch nicht in 'caret :: train' und' caret :: trainControl' angesprochen, und der aktuelle Status ist der gleiche wie in [diese Frage von 2012] (http://stackoverflow.com/questions/14023423/ How-to-Pre-Prozess-Features-wenn-einige-von-ihnen-sind-Faktoren). Die Verwendung eines "hacky" Workarounds wird also im Moment der richtige Weg sein ... – geekoverdose

Antwort

1

Es gibt (derzeit) keine Möglichkeit, dies zu tun, außer das Schreiben eines custom model dafür (siehe das Beispiel mit PLS und RF am Ende).

Ich arbeite an einer Methode, um anzugeben, welche Variablen welche vorverarbeitende Methode erhalten. Bei Dummy-Variablen ist dies jedoch schwierig, da Sie möglicherweise die Namen vieler Prädiktoren angeben müssen, deren Spalten nicht im aktuellen Datensatz enthalten sind. Die Idee ist, Platzhalter zu verwenden (z. B. Species*, um Speciesversicolor und Speciesvirginica zu erfassen), aber der Code ist noch nicht ganz da.

Max