Kroswalidacja potoku modelu czasu trwania lotu
Model z kroswalidacją, który przed chwilą zbudowałeś, był prosty – do przewidywania wartości duration używał jedynie zmiennej km.
Innym ważnym predyktorem czasu trwania lotu jest lotnisko wylotu. Z reguły start z ruchliwych lotnisk zajmuje więcej czasu. Sprawdźmy, czy dodanie tego predyktora poprawi model!
W tym ćwiczeniu dodasz pole org do modelu. Ponieważ org jest zmienną kategoryczną, trzeba ją najpierw odpowiednio przetworzyć: przekształcić na indeks, a następnie zakodować metodą one-hot, zanim będzie można połączyć ją z km i użyć do zbudowania modelu regresji. Wszystkie te operacje ujmiemy w potok.
Następujące obiekty zostały już utworzone:
params— pusty siatkę parametrówevaluator— ewaluator regresjiregression— obiektLinearRegressionzlabelCol='duration'.
Klasy StringIndexer, OneHotEncoder, VectorAssembler i CrossValidator zostały już zaimportowane.
To ćwiczenie jest częścią kursu
Uczenie maszynowe z PySpark
Instrukcje do ćwiczenia
- Utwórz indekser ciągów znaków. Wskaż pole wejściowe jako
org, a pole wyjściowe jakoorg_idx. - Utwórz koder one-hot. Nadaj polu wyjściowemu nazwę
org_dummy. - Połącz pola
kmiorg_dummyw jedno pole o nazwiefeatures. - Utwórz potok, korzystając z następujących operacji: indekser ciągów znaków, koder one-hot, asembler i regresja liniowa. Użyj go do utworzenia kroswalidatora.
Interaktywne ćwiczenie praktyczne
Spróbuj tego ćwiczenia, uzupełniając ten przykładowy kod.
# 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=____)