Cross-Validierung der Flugdauer-Modellpipeline
Das kreuzvalidierte Modell, das du gerade erstellt hast, war einfach, indem du nur km
benutzt hast, um duration
vorherzusagen.
Ein weiterer wichtiger Prädiktor für die Flugdauer ist der Herkunftsflughafen. Auf stark frequentierten Flughäfen dauert es in der Regel länger, bis die Flüge in die Luft kommen. Mal sehen, ob das Hinzufügen dieses Prädiktors das Modell verbessert!
In dieser Übung fügst du das Feld org
zum Modell hinzu. Da org
jedoch kategorisch ist, muss mehr Arbeit geleistet werden, bevor es einbezogen werden kann: Es muss zunächst in einen Index umgewandelt und dann mit einem Hotcode versehen werden, bevor es mit km
zusammengesetzt und zur Erstellung des Regressionsmodells verwendet wird. Wir verpacken diese Vorgänge in eine Pipeline.
Die folgenden Objekte sind bereits erstellt worden:
params
- ein leeres Parameterrasterevaluator
- einen Regressionsbewerterregression
- einLinearRegression
Objekt mitlabelCol='duration'
.
Die Klassen StringIndexer
, OneHotEncoder
, VectorAssembler
und CrossValidator
sind bereits importiert worden.
Diese Übung ist Teil des Kurses
Maschinelles Lernen mit PySpark
Anleitung zur Übung
- Erstelle einen String-Indexer. Gib die Eingabe- und Ausgabefelder als
org
undorg_idx
an. - Erstelle einen One-Hot-Encoder. Benenne das Ausgabefeld
org_dummy
. - Füge die Felder
km
undorg_dummy
zu einem einzigen Feld namensfeatures
zusammen. - Erstelle eine Pipeline mit den folgenden Operationen: String-Indexer, One-Hot-Encoder, Assembler und lineare Regression. Verwende dies, um einen Kreuzvalidator zu erstellen.
Interaktive Übung
Versuche dich an dieser Übung, indem du diesen Beispielcode vervollständigst.
# Create an indexer for the org field
indexer = ____(____, ____)
# Create an one-hot encoder for the indexed org field
onehot = ____(____, ____)
# Assemble the km and one-hot encoded fields
assembler = ____(____, ____)
# Create a pipeline and cross-validator.
pipeline = ____(stages=[____, ____, ____, ____])
cv = ____(estimator=____,
estimatorParamMaps=____,
evaluator=____)