Latihan - Memvisualisasikan Output Model

Selesai

Di unit ini, Anda akan mengimpor Matplotlib ke dalam buku catatan yang telah Anda kerjakan dan mengonfigurasi notebook untuk mendukung output Matplotlib sebaris.

  1. Beralih kembali ke buku catatan Azure yang Anda buat di bagian sebelumnya. Jika Anda menutup buku catatan, Anda bisa masuk kembali ke portal Microsoft Azure Notebooks, membuka buku catatan Anda, dan menggunakan Sel ->Jalankan Semua untuk menjalankan ulang semua sel dalam buku catatan setelah membukanya.

  2. Jalankan pernyataan berikut di sel baru pada akhir buku catatan. Abaikan pesan peringatan apa pun yang ditampilkan terkait dengan penembolokan font:

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

    Pernyataan pertama adalah salah satu dari beberapa perintah ajaib yang didukung oleh kernel Python yang Anda pilih saat membuat buku catatan. Perintah tersebut memungkinkan Jupyter membuat output Matplotlib di buku catatan tanpa membuat panggilan berulang ditampilkan. Dan itu harus muncul sebelum referensi ke Matplotlib itu sendiri. Pernyataan akhir mengonfigurasi Seaborn untuk meningkatkan output dari Matplotlib.

  3. Untuk melihat Matplotlib di tempat kerja, jalankan kode berikut di sel baru guna memetakan kurva ROC untuk model pembelajaran mesin yang Anda buat di lab sebelumnya:

    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. Konfirmasikan bahwa Anda melihat output berikut:

    ROC curve generated with Matplotlib.

    Kurva ROC dibuat dengan Matplotlib

Garis putus-putus di tengah grafik mewakili peluang 50-50 untuk mendapatkan jawaban yang benar. Kurva biru mewakili akurasi model Anda. Lebih penting lagi, fakta bahwa bagan ini muncul menunjukkan bahwa Anda dapat menggunakan Matplotlib dalam buku catatan Jupyter.

Alasan Anda membangun model pembelajaran mesin adalah untuk memprediksi apakah penerbangan akan tiba tepat waktu atau terlambat. Dalam latihan ini, Anda akan menulis fungsi Python yang memanggil model pembelajaran mesin yang dibangun di lab sebelumnya untuk menghitung kemungkinan penerbangan akan tepat waktu. Kemudian Anda akan menggunakan fungsi untuk menganalisis beberapa penerbangan.

  1. Masukkan definisi fungsi berikut dalam sel baru, lalu jalankan sel.

    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]
    

    Fungsi ini mengambil sebagai input tanggal dan waktu, kode bandara asal, dan kode bandara tujuan, dan mengembalikan nilai antara 0,0 dan 1,0 yang menunjukkan probabilitas bahwa penerbangan akan tiba di tujuannya tepat waktu. Hal ini menggunakan model pembelajaran mesin yang Anda bangun di lab sebelumnya untuk menghitung peluang. Dan untuk memanggil model, model meneruskan DataFrame yang berisi nilai input ke predict_proba. Struktur DataFrame sama persis dengan struktur DataFrame yang kita gunakan sebelumnya.

    Catatan

    Input tanggal ke fungsi predict_delay menggunakan format tanggal internasional dd/mm/year.

  2. Gunakan kode di bawah ini untuk menghitung peluang bahwa penerbangan dari New York ke Atlanta pada malam hari tanggal 1 Oktober akan tiba tepat waktu. Tahun yang Anda masukkan tidak relevan karena tidak digunakan oleh model.

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

    Konfirmasikan bahwa output menunjukkan bahwa kemungkinan kedatangan tepat waktu adalah 60%:

    Predicting whether a flight will arrive on time.

    Memprediksi apakah penerbangan akan tiba tepat waktu

  3. Ubah kode untuk menghitung peluang bahwa penerbangan yang sama sehari kemudian akan tiba tepat waktu:

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

    Seberapa besar kemungkinan penerbangan ini tiba tepat waktu? Jika rencana perjalanan Anda fleksibel, apakah Anda akan mempertimbangkan untuk menunda perjalanan Anda selama satu hari?

  4. Sekarang ubah kode untuk menghitung kemungkinan penerbangan pagi hari dari Atlanta ke Seattle akan tiba tepat waktu:

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

    Apakah penerbangan ini mungkin tiba tepat waktu?

Anda sekarang memiliki cara mudah untuk memprediksi, dengan satu baris kode, apakah penerbangan cenderung tepat waktu atau terlambat. Jangan ragu untuk bereksperimen dengan tanggal, waktu, asal, dan tujuan lainnya. Tetapi perlu diingat bahwa hasilnya hanya bermakna untuk kode bandara ATL, DTW, JFK, MSP, dan SEA karena itu adalah satu-satunya kode bandara yang dilatih model.

  1. Jalankan kode berikut untuk memplot peluang kedatangan tepat waktu untuk penerbangan malam dari JFK ke ATL selama rentang hari:

    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. Konfirmasikan bahwa output terlihat seperti ini:

    Probability of on-time arrivals for a range of dates.

    Peluang kedatangan tepat waktu untuk rentang tanggal

  3. Ubah kode untuk menghasilkan bagan serupa untuk penerbangan yang meninggalkan JFK ke MSP pada pukul 13:00 pada 10 April hingga 16 April. Bagaimana output dibandingkan dengan output pada langkah sebelumnya?

  4. Dengan sendirinya, tulis kode untuk membuat grafik probabilitas bahwa penerbangan meninggalkan SEA untuk ATL pukul 09:00, siang, 15:00, 18:00, dan 21:00 pada 30 Januari akan tiba tepat waktu. Konfirmasikan bahwa output cocok dengan ini:

    Probability of on-time arrivals for a range of times.

    Peluang kedatangan tepat waktu untuk rentang waktu

Jika Anda baru mengenal Matplotlib dan ingin mempelajarinya lebih lanjut, Anda akan menemukan tutorial yang sangat baik di https://www.labri.fr/perso/nrougier/teaching/matplotlib/. Ada lebih banyak hal di Matplotlib daripada yang ditampilkan di sini, yang merupakan salah satu alasan mengapa Matplotlib begitu populer di komunitas Python.