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?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage