Ich versuche, die kategorischen Variablen meines Pandas-Datenrahmens, der sowohl kategoriale als auch fortlaufende Variablen enthält, mit oneHotEncode zu codieren. Ich weiß, dass dies leicht mit der pandas .get_dummies() - Funktion erledigt werden kann, aber ich brauche eine Pipeline, damit ich später eine PMML-Datei erzeugen kann.So führen Sie die Onehotizen-Kodierung in der Sklearn-Pipeline durch
Dies ist der Code zum Erstellen eines Mappers. Die kategorischen Variablen, die ich kodieren möchte, sind in einer Liste namens "Dummies" gespeichert.
from sklearn_pandas import DataFrameMapper
from sklearn.preprocessing import OneHotEncoder
from sklearn.preprocessing import LabelEncoder
mapper = DataFrameMapper(
[(d, LabelEncoder()) for d in dummies] +
[(d, OneHotEncoder()) for d in dummies]
)
Und das ist der Code zum Erstellen einer Pipeline, einschließlich der Mapper und lineare Regression.
from sklearn2pmml import PMMLPipeline
from sklearn.linear_model import LinearRegression
lm = PMMLPipeline([("mapper", mapper),
("regressor", LinearRegression())])
Wenn ich versuche jetzt (mit ‚Features‘ ein Datenrahmen ist, und ‚Ziele‘ eine Serie) zu passen, gibt es einen Fehler ‚konnte nicht Zeichenfolge konvertieren zu schweben‘.
lm.fit(features, targets)
Wer kann mir helfen? Ich bin verzweifelt für die Arbeit Pipelines einschließlich der Vorverarbeitung von Daten ... Vielen Dank im Voraus!
Vielen Dank, der labelbinarizer funktioniert für mich. Ich denke jedoch, dass ich nur die kategorischen Eigenschaften, die ich durch ein Hodenkodieren habe, nur noch bewahre. Gibt es eine Möglichkeit, auch die ursprünglichen kontinuierlichen Features einzubinden? –
Ja, liste sie im 'DataFrameMapper' mit' None' als Transformer auf. – dukebody