Latihan - Memvisualisasikan Output Model
Di unit ini, Anda akan mengimpor Matplotlib ke dalam buku catatan yang telah Anda kerjakan dan mengonfigurasi notebook untuk mendukung output Matplotlib sebaris.
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.
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.
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')
Konfirmasikan bahwa Anda melihat output berikut:
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.
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 internasionaldd/mm/year
.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%:
Memprediksi apakah penerbangan akan tiba tepat waktu
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?
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.
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))
Konfirmasikan bahwa output terlihat seperti ini:
Peluang kedatangan tepat waktu untuk rentang tanggal
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?
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:
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.