Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (2023)

  • Artikel

In diesem Artikel,dane nycflights13Es wird verwendet, um vorherzusagen, ob sich ein Flug um mehr als 30 Minuten verspäten wird. Anschließend verwenden wir die Vorhersageergebnisse, um ein interaktives Power BI-Dashboard zu erstellen.

Großartig

Microsoft Fabric befindet sich in der Vorschau. Dieser Hinweis gilt für eine Vorabversion des Produkts, die möglicherweise Hardwareänderungen vor der Veröffentlichung unterliegt. Microsoft übernimmt keine Garantien, weder ausdrücklich noch stillschweigend, in Bezug auf die hier bereitgestellten Informationen.

In diesem Tutorial erfahren Sie Folgendes:

  • verwendenschludne modelse - PuckettWieRezept,Pasternak,eine Probe,ArbeitsprozessVerarbeiten Sie Daten und trainieren Sie Modelle für maschinelles Lernen.
  • Speichern Sie die Ausgabe als Delta-Array in Lakehouse.
  • Erstellen Sie visuelle Power BI-Berichte und nutzen Sie die Suchfunktion, um direkt auf Daten in Lakehouse zuzugreifen.

Benötigen

  • Power BI Premium-Abonnement. Wenn Sie es noch nicht getan haben, erfahren Sie mehrErfahren Sie, wie Sie Power BI Premium erwerben können.

  • Ein Power BI-Arbeitsbereich mit zugewiesener Premium-Kapazität. Wenn Sie keinen Arbeitsbereich haben, befolgen Sie diese SchritteErstellen Sie einen ArbeitsbereichErstellen Sie einen Arbeitsbereich und weisen Sie ihn einer Premium-Kapazität zu.

  • berührenMicrosoft FabricA.

  • Öffnen oder erstellen Sie ein Notizbuch. Weitere Informationen finden Sie unterVerwendung von Microsoft Fabric-Laptops.

  • durch VeränderungSprachoptionenexistiertKonfigurieren von SparkR(R)..

  • Schließen Sie Ihren Laptop an das Lakehouse an. links auswählenergänzenFügen Sie ein bestehendes Seehaus hinzu oder erstellen Sie ein Seehaus.

  • Schließen Sie Ihren Laptop an das Lakehouse an. links auswählenergänzenFügen Sie ein bestehendes Seehaus hinzu oder erstellen Sie ein Seehaus.

Installationspaket

Um den Code in diesem Artikel zu verwenden, installieren Sie bitte das Paket nycflights13.

install.packages ("nycflights13")
# Paketebibliothek laden(tidymodels) # für Tidymodels Paketebibliothek(nycflights13) # für Flugdaten

Daten anzeigen

SchimmelFlug nach New York 13Die Daten umfassen Informationen zu 325.819 Flügen in der Nähe von New York im Jahr 2013. Schauen wir uns zunächst den Zeitplan der Flugverspätungen an. Die folgende Abbildung zeigt, dass die Verteilung der Ankunftsverzögerungen entsprechend schief ist, mit einem langen Ende bei hohen Werten.

ggplot(航班, aes(arr_delay)) + geom_histogram(color="blue", bins = 300)

Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (1)

Laden Sie die Daten und nehmen Sie Änderungen an den Variablen vor:

set.seed(123)flight_data <- Flüge %>% mutate( # Ankunftsverzögerung durch Faktor ersetzen arr_delay = ifelse(arr_delay >= 30, "late", "on_time"), arr_delay = Factor(arr_delay), # wird Datum verwenden (nicht Datum und Uhrzeit) in den folgenden Rezepten date = lubridate::as_date(time_hour) ) %>% # Wetterdaten einbeziehen inner_join(weather, by = c("origin", "time_hour")) % >% # Nur wir Behalten Sie die angegebenen Spalten bei, die wir verwenden werden. Select(dep_time, Flight, origin, Destination, air_time, distance, Carrier, date, arr_delay, time_hour) %>% # fehlende Daten ausschließen na.omit() %>% # um das Modell besser zu erstellen Spalten qualitativ kodieren # als Faktoren (anstelle von Strings) mutate_if(is.character, as.factor)

Bevor wir mit dem Aufbau des Modells beginnen, werfen wir einen Blick auf einige spezifische Variablen, die sowohl für die Vorverarbeitung als auch für die Modellierung wichtig sind.

Beachten Sie, dass die sogenanntenarr_delayDie Variablen sind Faktorvariablen. i Es ist wichtig, dass die Ergebnisvariable ein Faktor beim Training eines logistischen Regressionsmodells ist.

Auf einen Blick (Flugdetails)

Wie Sie sehen können, haben etwa 16 % der Flüge in diesem Datensatz mehr als 30 Minuten Verspätung.

Flight_data %>% count(arr_delay) %>% mutate(prop = n/sum(n))

Enthält 104 ZieleZiel.

eindeutig ($destination-Flugdaten)

Es gibt 16 verschiedene Betreiber.

eindeutig ($carrier-Flugdetails)

Datenübertragung

Teilen Sie diesen einzelnen Datensatz zunächst in zwei Teile auf: aTrainingssetICHTestgerätBehalten Sie die meisten Zeilen (eine zufällig ausgewählte Teilmenge) aus dem ursprünglichen Datensatz im Trainingssatz bei. DasTrainingsdatenfür Sondermodelle undTestgerätEs wird verwendet, um die Leistung des Modells zu messen.

benutze daseine ProbeDurch die Kapselung wird ein Objekt erstellt, das Informationen zum Trennen der Daten enthält, und anschließend werden zwei Objekte erstellteine ProbeFunktionen zum Generieren von Datenrahmen für die Trainings- und Testsätze:

set.seed(123)# Die meisten Daten im Trainingssatz behalten data_split <- initial_split(flight_data, prop = 0.75)# Datenrahmen für beide Gruppen erstellen: train_data <- training(data_split)test_data <- testing(data_split)

Erstellen Sie Rezepte und Brötchen

Erstellen Sie ein Rezept für ein einfaches logistisches Regressionsmodell. Bevor Sie das Modell trainieren, verwenden Sie das Rezept, um einige neue Prädiktoren zu erstellen und die für das Modell erforderliche Vorverarbeitung durchzuführen.

verwendenupdateRole()Benachrichtigung über die RezeptfunktionalitätvielICHZeit ZeitEine Variable mit dem Namen „Benutzerdefinierte Rolle“.AusweisJa (die Rolle kann einen beliebigen Zeichenwert haben). Die Formel enthält alle Variablen im Trainingssatz außerarr_delayals Prädiktor. Das Rezept behält die beiden ID-Variablen bei, verwendet sie jedoch nicht als Ergebnis- oder Prädiktorvariablen.

Flights_rec <- κανόνας(delay_arr ~ ., data = train_data) %>% update_role(flight, time_time, new_role = "ID")

verwendenzusammenfassen()Funktion, die den aktuellen Satz an Variablen und Rollen anzeigt:

Zusammenfassung (flights_rec)

eine Funktion erstellen

Entwickeln Sie einige Funktionen, um Ihr Modell zu verbessern. Es kann sinnvoll sein, dass das Flugdatum die Wahrscheinlichkeit einer Verspätung beeinflusst.

dane lotu %>% different(date) %>% mutate(numeric_date = as.numeric(date))

Am besten fügen Sie Modellbegriffe hinzu, die aus Daten abgeleitet werden, die für das Modell möglicherweise am relevantesten sind. Die folgenden wichtigen Merkmale ergeben sich aus jeder Datumsvariablen:

  • täglich
  • Mond
  • Gibt an, ob das Datum auf einen Feiertag fällt.

Machen Sie alle drei, indem Sie die folgenden Schritte zum Rezept hinzufügen:

Flüge_rec <- Rezept (delay_arr ~ ., data = train_data) %>% update_role (flight, time_time, new_role = "ID") %>% step_date (Datum, Funktionen = c ("down", "month")) %> %> % step_holiday(date, Feiertage = timeDate::listHolidays("USA"), keep_original_cols = FALSE) %>% step_dummy(all_nominal_predictors()) %>% step_zv(all_predictors()) %>% step_dummy(all_nominal_predictors())

Passen Sie Modelle mit Rezepten an

Modellflugdaten mit logistischer Regression. Beginnen Sie mit der Erstellung von ModellspezifikationenPasternakPaket:

lr_mod <- logistic_reg() %>% set_engine("glm")

Dann nutzen Sie diesArbeitsprozessPaket zu IhnenPasternakModell (lr_mod) nach Ihrem Rezept (Rekordlos) Paket.

Flights_wflow <- Workflow() %>% add_model(lr_mod) %>% add_recipe(flights_rec)flights_wflow

Bildungsmodell

Hier ist eine Funktion, mit der Sie ein Rezept vorbereiten und ein Modell anhand der vorhergesagten Faktoren trainieren können:

Flights_fit <- Flights_wflow %>% fit(data = train_data)

Nutzen Sie Hilfsfunktionenxtract_fit_parsnip()ICHRezept_Extrakt()Exportieren Sie das Modell- oder Rezeptobjekt aus dem Workflow. Hier ziehen Sie beispielsweise das benutzerdefinierte Modellobjekt B. und verwenden es dannSweep::Order()Funktionen zum Erhalten sauberer Untertitel für Modellfaktoren:

Flights_fit %>% extract_fit_parsnip() %>% order()

Vorhersageergebnis

Verwenden Sie jetzt den trainierten Workflow (Flüge_Match) verwenden unbeaufsichtigte Testdaten, um vorherzusagen, was von einem Anruf zu erwarten istliefern()Ich mache. Zehnliefern()eine Methode zum Anwenden des Rezepts auf neue Daten, die dann an das benutzerdefinierte Modell übergeben werden.

vorhersagen (flight_match, test_data)

Nehmen Sie nun den Ausgang nachliefern()Geben Sie die beabsichtigte Klasse zurück:spätumrechtzeitigWenn Sie umgekehrt vorhergesagte Klassenwahrscheinlichkeiten für jedes Los wünschen, verwenden SieZunahme()Bewahren Sie sie zusammen mit dem Modell und den Testdaten auf:

Flights_august <- Inkrement (flight_match, test_data)

Die Daten sehen so aus:

schau (flights_aug.)

Bewertungsmodell

Jetzt haben Sie eine Vorstellung von den vorhergesagten Klassenwahrscheinlichkeiten. In diesen ersten Zeilen können Sie sehen, dass das Modell 5 Lose (Werte) korrekt vorhergesagt hat.pred_on_timep > 0,50). Aber Sie wissen auch, dass wir insgesamt 81.455 Serien zur Vorhersage haben.

Sie benötigen eine Metrik, um zu messen, wie gut Ihr Modell Verzögerungen im Vergleich zum tatsächlichen Zustand der Ausgabevariablen vorhersagt.arr_delay

Verwenden Sie die Fläche unter der ROC-Kurve als Maßroc_curve()ICHroc_auc()zSkalaDas Paket wird angenommen.

loty_sierpień %>% roc_curve(truth = arr_delay, .pred_late) %>% autoplot()

Erstellen Sie einen PowerBI-Bericht

Das Modell ist super geworden! Verwenden Sie die Ergebnisse der Flugverspätungsprognose, um ein interaktives Power BI-Dashboard zu erstellen, das die Anzahl der Flüge nach Fluggesellschaft und die Anzahl der Flüge nach Ziel anzeigt. Das Dashboard kann auch die Ergebnisse der Latenzvorhersage filtern.

Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (2)

Fügen Sie zunächst den Namen der Fluggesellschaft und des Flughafens zum Datensatz mit den Vorhersageergebnissen hinzu.

clean_flights <- august_flights %>% # Flugliniendaten einschließen left_join(airline, c("carrier"="carrier"))%>% rename("carrier_name"="name") %>% # Flughafendaten einschließen left_join( Flughäfen, c("origin"="faa")) %>% rename("origin_name"="name") %>% # enthält Details zum Zielflughafen left_join(airports, c("dest"="faa")) % > % rename("target_name"="name") %>% # Nur bestimmte Spalten beibehalten, die wir verwenden werden select(flight, origin, origin_name, dest, dest_name, air_time, distance, Carrier, Carrier_name, date, arr_delay, time_hour , .pred_class , .pred_late, .pred_on_time)

Die Daten sehen so aus:

Ein Blick (Flugzeugreinigung)

Konvertieren Sie Daten in einen Spark-Datenrahmen:

sparkdf <- as.DataFrame(flights_clean) show(sparkdf)

Speichern Sie die Daten in der Delta-Tabelle in Lakehouse:

# Zapisz dane do delta tabletemp_delta<-"Tables/nycflight13"write.df(sparkdf, temp_delta ,source="delta", mode = "overwrite", header = "true")

Jetzt können Sie diese Tabelle verwenden, um ein Power BI-Dataset zu erstellen.

  1. links auswählenOneLake-Rechenzentrumaußen.

  2. Wählen Sie das Seehaus aus, das dem Notizbuch beigefügt ist.

  3. Wählen Sie die obere rechte Ecke ausOffenaußen.

    Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (3)

  4. oben auswählenNeue Power BI-Datensätze.

  5. Bitte treffen Sie eine WahlFlug nach New York 13Also für Ihren neuen Datensatzbestätigenaußen.

  6. Ein Power BI-Datensatz wird erstellt. oben auswählenneue Ausstellungaußen.

  7. Wählen Sie Felder aus dem Daten- und Visuals-Bereich aus oder ziehen Sie sie in den Berichtsbereich, um einen Bericht zu erstellen.

Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (4)

Erstellen Sie den am Anfang dieses Abschnitts gezeigten Bericht mit den folgenden Bildern und Daten:

  1. Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (5)Gestapeltes Balkendiagramm:
    1. Y-Achse:Anbietername.
    2. X-Achse:viel.Bitte treffen Sie Ihre WahlBuchhaltung) inaktiv.
    3. Legende:Herkunft des Namens
  2. Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (6)Gestapeltes Balkendiagramm:
    1. Y-Achse:Zielname.
    2. X-Achse:viel.Bitte treffen Sie Ihre WahlBuchhaltung) inaktiv.
    3. Legende:Herkunft des Namens.
  3. Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (7)mein Stück:
    1. Feld:_pred_class
  4. Tutorial: Vorhersage von Flugverspätungen mit R – Microsoft Fabric (8)mein Stück:
    1. Feld:_pred_late

nächster Schritt

  • Verwendung von SparkR
  • mit Sparklyr
  • Nutzung von Tidyverse
  • Verwalten der R-Bibliothek
  • Datenvisualisierung in R
  • Tutorial: Avocado-Preise vorhersagen
Top Articles
Latest Posts
Article information

Author: Duncan Muller

Last Updated: 06/15/2023

Views: 5435

Rating: 4.9 / 5 (79 voted)

Reviews: 86% of readers found this page helpful

Author information

Name: Duncan Muller

Birthday: 1997-01-13

Address: Apt. 505 914 Phillip Crossroad, O'Konborough, NV 62411

Phone: +8555305800947

Job: Construction Agent

Hobby: Shopping, Table tennis, Snowboarding, Rafting, Motor sports, Homebrewing, Taxidermy

Introduction: My name is Duncan Muller, I am a enchanting, good, gentle, modern, tasty, nice, elegant person who loves writing and wants to share my knowledge and understanding with you.