- 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 13
Die 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)
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_delay
Die 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 Probe
Durch die Kapselung wird ein Objekt erstellt, das Informationen zum Trennen der Daten enthält, und anschließend werden zwei Objekte erstellteine Probe
Funktionen 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ätviel
ICHZeit Zeit
Eine Variable mit dem Namen „Benutzerdefinierte Rolle“.Ausweis
Ja (die Rolle kann einen beliebigen Zeichenwert haben). Die Formel enthält alle Variablen im Trainingssatz außerarr_delay
als 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 ModellspezifikationenPasternak
Paket:
lr_mod <- logistic_reg() %>% set_engine("glm")
Dann nutzen Sie diesArbeitsprozess
Paket zu IhnenPasternak
Modell (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ät
umrechtzeitig
Wenn 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_time
p > 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()
zSkala
Das 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.
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.
links auswählenOneLake-Rechenzentrumaußen.
Wählen Sie das Seehaus aus, das dem Notizbuch beigefügt ist.
Wählen Sie die obere rechte Ecke ausOffenaußen.
oben auswählenNeue Power BI-Datensätze.
Bitte treffen Sie eine WahlFlug nach New York 13Also für Ihren neuen Datensatzbestätigenaußen.
Ein Power BI-Datensatz wird erstellt. oben auswählenneue Ausstellungaußen.
Wählen Sie Felder aus dem Daten- und Visuals-Bereich aus oder ziehen Sie sie in den Berichtsbereich, um einen Bericht zu erstellen.
Erstellen Sie den am Anfang dieses Abschnitts gezeigten Bericht mit den folgenden Bildern und Daten:
Gestapeltes Balkendiagramm:
- Y-Achse:Anbietername.
- X-Achse:viel.Bitte treffen Sie Ihre WahlBuchhaltung) inaktiv.
- Legende:Herkunft des Namens
Gestapeltes Balkendiagramm:
- Y-Achse:Zielname.
- X-Achse:viel.Bitte treffen Sie Ihre WahlBuchhaltung) inaktiv.
- Legende:Herkunft des Namens.
mein Stück:
- Feld:_pred_class
mein Stück:
- 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