Übung: Visualisieren der Ausgabe des Modells

Abgeschlossen

In dieser Lerneinheit importieren Sie Matplotlib in das Notebook, mit dem Sie bis jetzt gearbeitet haben, und konfigurieren das Notebook so, dass es Matplotlib-Inlineausgaben unterstützt.

  1. Wechseln Sie zurück zum Azure-Notebook, das Sie im vorherigen Abschnitt erstellt haben. Wenn Sie das Notizbuch geschlossen haben, können Sie sich wieder beim Microsoft Azure-Notizbuchportal anmelden, Ihr Notizbuch öffnen und " Cell ->Run All " verwenden, um alle Zellen im Notizbuch nach dem Öffnen erneut auszuführen.

  2. Führen Sie dazu den folgenden Code in einer neuen Zelle am Ende des Notebooks aus: Ignorieren Sie Warnmeldungen bezüglich des Zwischenspeicherns von Schriftarten:

    %matplotlib inline
    import matplotlib.pyplot as plt
    import seaborn as sns
    
    sns.set()
    

    Die erste Anweisung ist eine von mehreren magischen Befehlen , die vom Python-Kernel unterstützt werden, den Sie beim Erstellen des Notizbuchs ausgewählt haben. Es ermöglicht Jupyter, Matplotlib-Ausgaben in einem Notizbuch darzustellen, ohne wiederholte Aufrufe von show. Er muss verwendet werden, bevor Verweise auf Matplotlib hinzugefügt werden. Die endgültige Aussage konfiguriert Seaborn , um die Ausgabe von Matplotlib zu verbessern.

  3. Um Matplotlib bei der Arbeit zu sehen, führen Sie den folgenden Code in einer neuen Zelle aus, um die ROC-Kurve für das Machine Learning-Modell zu zeichnen, das Sie in der vorherigen Übung erstellt haben:

    from sklearn.metrics import roc_curve
    
    fpr, tpr, _ = roc_curve(test_y, probabilities[:, 1])
    plt.plot(fpr, tpr)
    plt.plot([0, 1], [0, 1], color='grey', lw=1, linestyle='--')
    plt.xlabel('False Positive Rate')
    plt.ylabel('True Positive Rate')
    
  4. Dann sollten Sie die folgende Ausgabe sehen:

    ROC-Kurve, die mit Matplotlib generiert wurde.

    ROC-Kurve mit Matplotlib generiert

Die gestrichelte Linie in der Mitte des Graphen stellt eine 50-50-Chance einer korrekten Antwort dar. Die blaue Kurve ist die Treffergenauigkeit Ihres Modells. Darüber hinaus ist es wichtig, dass dieses Diagramm überhaupt angezeigt wird, denn das bedeutet, dass Sie Matplotlib in einem Jupyter-Notebook verwenden können.

Sie haben ein Machine Learning-Modell erstellt, um vorherzusagen, ob ein Flug pünktlich sein wird. In dieser Übung schreiben Sie eine Python-Funktion, die das Machine Learning-Modell aufruft, dass Sie im vorherigen Lab erstellt haben, um die Wahrscheinlichkeit der Pünktlichkeit des Fluges zu berechnen. Dann analysieren Sie mit dieser Funktion mehrere Flüge.

  1. Geben Sie die folgende Funktionsdefinition in eine neue Zelle ein, und führen Sie diese aus.

    def predict_delay(departure_date_time, origin, destination):
        from datetime import datetime
    
        try:
            departure_date_time_parsed = datetime.strptime(departure_date_time, '%d/%m/%Y %H:%M:%S')
        except ValueError as e:
            return 'Error parsing date/time - {}'.format(e)
    
        month = departure_date_time_parsed.month
        day = departure_date_time_parsed.day
        day_of_week = departure_date_time_parsed.isoweekday()
        hour = departure_date_time_parsed.hour
    
        origin = origin.upper()
        destination = destination.upper()
    
        input = [{'MONTH': month,
                  'DAY': day,
                  'DAY_OF_WEEK': day_of_week,
                  'CRS_DEP_TIME': hour,
                  'ORIGIN_ATL': 1 if origin == 'ATL' else 0,
                  'ORIGIN_DTW': 1 if origin == 'DTW' else 0,
                  'ORIGIN_JFK': 1 if origin == 'JFK' else 0,
                  'ORIGIN_MSP': 1 if origin == 'MSP' else 0,
                  'ORIGIN_SEA': 1 if origin == 'SEA' else 0,
                  'DEST_ATL': 1 if destination == 'ATL' else 0,
                  'DEST_DTW': 1 if destination == 'DTW' else 0,
                  'DEST_JFK': 1 if destination == 'JFK' else 0,
                  'DEST_MSP': 1 if destination == 'MSP' else 0,
                  'DEST_SEA': 1 if destination == 'SEA' else 0 }]
    
        return model.predict_proba(pd.DataFrame(input))[0][0]
    

    Die Funktion akzeptiert ein Datum und eine Uhrzeit und den Code eines Abflug- und eines Zielflughafens als Eingabe und gibt einen Wert zwischen 0,0 und 1,0 zurück, der die Wahrscheinlichkeit der pünktlichen Ankunft eines Fluges angibt. Sie verwendet das Machine Learning-Modell aus dem vorherigen Lab, um die Wahrscheinlichkeit zu berechnen. Sie ruft das Modell auf, indem Sie eine Datenmatrix mit den Eingabewerten an predict_proba übergibt. Die Struktur der Datenmatrix stimmt genau mit der Struktur der Datenmatrix überein, die wir bereits verwendet haben.

    Hinweis

    Das Datum, das als Eingabe an die predict_delay-Funktion übergeben wird, weist das internationalen Datumsformat dd/mm/year auf.

  2. Mit dem unten stehenden Code können Sie die Wahrscheinlichkeit berechnen, mit der ein Flug von New York nach Atlanta am Abend des 1. Oktobers pünktlich sein wird. Das eingegebene Jahr ist nicht relevant, da es nicht vom Modell verwendet wird.

    predict_delay('1/10/2018 21:45:00', 'JFK', 'ATL')
    

    Die Ausgabe sollte besagen, dass die Wahrscheinlichkeit der pünktlichen Ankunft des Fluges bei 60 % liegt:

    Vorhersagen, ob ein Flug rechtzeitig ankommen wird.

    Vorhersagen, ob ein Flug rechtzeitig eintrifft

  3. Passen Sie den Code an, um zu berechnen, wie wahrscheinlich der Flug einen Tag später pünktlich sein wird:

    predict_delay('2/10/2018 21:45:00', 'JFK', 'ATL')
    

    Wie wahrscheinlich ist es, dass dieser Flug pünktlich ist? Wenn Sie flexibel reisen können, würden Sie in Erwägung ziehen, Ihre Reise um einen Tag zu verschieben?

  4. Passen Sie den Code an, um zu berechnen, wie wahrscheinlich ein Morgenflug am gleichen Tag von Atlanta nach Seattle pünktlich sein wird:

    predict_delay('2/10/2018 10:00:00', 'ATL', 'SEA')
    

    Wie wahrscheinlich ist es, dass dieser Flug pünktlich ist?

Jetzt können Sie ganz einfach mit nur einer Codezeile vorhersagen, wie wahrscheinlich ein Flug pünktlich sein wird. Probieren Sie auch andere Datumsangaben, Uhrzeiten und Abflug- und Zielflughäfen aus, um sich unterschiedliche Ergebnisse anzusehen. Denken Sie jedoch daran, dass die Ergebnisse nur für die Flughafencodes ATL, DTW, JFK, MSP und SEA aussagekräftig sind, da das Modell nur mit diesen Codes trainiert wurde.

  1. Führen Sie den folgenden Code aus, um die Wahrscheinlichkeit der Pünktlichkeit eines Abendflugs von JFK nach ATL zu plotten:

    import numpy as np
    
    labels = ('Oct 1', 'Oct 2', 'Oct 3', 'Oct 4', 'Oct 5', 'Oct 6', 'Oct 7')
    values = (predict_delay('1/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('2/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('3/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('4/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('5/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('6/10/2018 21:45:00', 'JFK', 'ATL'),
              predict_delay('7/10/2018 21:45:00', 'JFK', 'ATL'))
    alabels = np.arange(len(labels))
    
    plt.bar(alabels, values, align='center', alpha=0.5)
    plt.xticks(alabels, labels)
    plt.ylabel('Probability of On-Time Arrival')
    plt.ylim((0.0, 1.0))
    
  2. Vergewissern Sie sich, dass die Ausgabe folgendermaßen aussieht:

    Wahrscheinlichkeit pünktlicher Ankünfte für einen bestimmten Zeitraum.

    Wahrscheinlichkeit pünktlicher Ankünfte für einen bestimmten Zeitraum

  3. Passen Sie den Code an, um ein ähnliches Diagramm für Flüge von JFK nach MSP vom 10. bis zum 16. April zu erzeugen. Wie unterscheidet sich die Ausgabe von der vorherigen Ausgabe?

  4. Schreiben Sie selbstständig Code, um die Wahrscheinlichkeit der Pünktlichkeit von Flügen von SEA nach ATL am 30. Januar um 9:00 Uhr, 12:00 Uhr, 15:00 Uhr, 18:00 Uhr und 21:00 Uhr grafisch darzustellen. Vergewissern Sie sich, dass die Ausgabe folgendermaßen aussieht:

    Wahrscheinlichkeit von pünktlichen Ankünften für einen bestimmten Zeitraum.

    Wahrscheinlichkeit von pünktlichen Ankünften für verschiedene Zeiträume

Wenn Sie neu bei Matplotlib sind und mehr darüber erfahren möchten, finden Sie ein hervorragendes Tutorial bei https://www.labri.fr/perso/nrougier/teaching/matplotlib/.. Es gibt wesentlich mehr zu Matplotlib, als hier gezeigt wurde, was ein Grund dafür ist, warum es in der Python-Community so beliebt ist.