Dummy-Erstellung in der Pipeline mit verschiedenen Ebenen in Zug und Test-Set
Ich erforsche gerade die Scikit Learn Pipelines. Ich möchte die Daten auch mit einer Pipeline vorverarbeiten. Meine Zug- und Testdaten weisen jedoch unterschiedliche Ebenen der kategorialen Variablen auf. Beispiel: Betrachten Sie:
import pandas as pd
train = pd.Series(list('abbaa'))
test = pd.Series(list('abcd'))
Ich habe eine TransformerMixinClass mit pandas @ geschrieb
class CreateDummies(TransformerMixin):
def transform(self, X, **transformparams):
return pd.get_dummies(X).copy()
def fit(self, X, y=None, **fitparams):
return self
fit_transform ergibt für die Zugdaten 2 Spalten und für die Testdaten 4 Spalten. Also hier keine Überraschung, aber nicht für eine Pipeline geeignet
Similary, ich habe versucht, den Label-Encoder (und OneHotEncoder für die möglichen nächsten Schritte) zu importieren:
from sklearn.preprocessing import LabelEncoder, OneHotEncoder
le = LabelEncoder()
le.fit_transform(train)
le.transform(test)
, was nicht überraschend einen Fehler ergibt.
So das Problem hier ist, dass ich einige Informationen benötige, die im Test-Set enthalten sind. Gibt es eine gute Möglichkeit, dies in eine Pipeline aufzunehmen?