Alıştırma - Modelin Çıktısını Görselleştirme
Bu ünitede, Matplotlib’i çalışmakta olduğunuz not defterine aktaracaksınız ve not defterini, satır içi Matplotlib çıktılarını destekleyecek biçimde yapılandıracaksınız.
Önceki bölümde oluşturduğunuz Azure not defterine dönün. Not defterini kapattıysanız, Microsoft Azure Notebooks portalında yeniden oturum açabilir, not defterinizi açabilir ve hücreyi açdıktan sonra not defterindeki tüm hücreleri yeniden çalıştırmak için Tümünü Çalıştır hücresini> kullanabilirsiniz.
Not defterinin sonundaki yeni bir hücrede aşağıdaki deyimleri yürütün. Yazı tipini önbelleğe alma hakkındaki uyarı iletilerini yoksayın:
%matplotlib inline import matplotlib.pyplot as plt import seaborn as sns sns.set()
İlk deyim, not defterini oluştururken seçtiğiniz Python çekirdeğinin desteklediği birkaç magic komutundan biridir. Jupyter’in bir not defterindeki Matplotlib çıktılarını arka arkaya show çağrıları yapmasına gerek kalmadan işlemesine olanak tanır. Ayrıca tüm Matplotlib başvurularından önce bulunması gerekir. Son deyim, Seaborn’u Matplotlib çıktılarını geliştirecek biçimde yapılandırır.
Matplotlib’i iş başında görmek için, bir önceki laboratuvarda oluşturduğunuz makine öğrenmesi modelinin ROC eğrisini çizmek üzere şu kodu yeni bir hücrede yürütün:
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')
Şu çıktıyı gördüğünüzü onaylayın:
Matplotlib ile oluşturulan ROC eğrisi
Grafiğin ortasındaki noktalı çizgi, doğru bir yanıt alma olasılığının %50 olduğunu gösterir. Mavi eğri, modelinizin doğruluğunu temsil eder. Daha da önemlisi, bu grafiğin görüntülenebilmesi bir Jupyter not defterinde Matplotlib kullanabileceğiniz anlamına gelir.
Bir makine öğrenmesi modeli oluşturmanızın nedeni, uçuşların gecikip gecikmeyeceğini tahmin etmektir. Bu alıştırmada, bir önceki laboratuvarda oluşturduğunuz makine öğrenmesi modeline çağrı yaparak uçuşun gecikip gecikmeme olasılığını hesaplayan bir Python işlevi yazacaksınız. Ardından bu işlevi kullanarak birkaç uçuşu analiz edeceksiniz.
Aşağıdaki işlev tanımını yeni bir hücreye girip hücreyi çalıştırın.
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]
Bu işlev girdi olarak bir tarih ve saat, bir kalkış havaalanı kodu ve bir varış havaalanı kodu alır. Ardından 0.0 ila 1.0 arasında bir değer döndürür. Bu değer, uçuşun hedefine zamanında varma olasılığını belirtir. Olasılık hesaplanırken, bir önceki laboratuvarda oluşturduğunuz makine öğrenmesi modeli kullanılır. Modele çağrı yapmak içinse girdi değerlerini içeren bir DataFrame’i
predict_proba
tarafına geçirir. Bu DataFrame’in yapısı, daha önce kullandığımız DataFrame’in yapısıyla tamamen aynıdır.Dekont
predict_delay
işlevindeki tarih girişlerinde uluslararası tarih biçimi olandd/mm/year
biçimini kullanılır.Aşağıdaki kodu kullanarak, 1 Ekim’de New York’tan kalkıp Atlanta’ya giden bir uçuşun zamanında varma olasılığını hesaplayın. Model yıl bilgisini kullanmadığı için girdiğiniz yıl alakalı değildir.
predict_delay('1/10/2018 21:45:00', 'JFK', 'ATL')
Çıktının, zamanında varma olasılığını %60 olarak gösterdiğini onaylayın:
Bir uçuşun zamanında varıp varmayacağını tahmin etme
Aynı uçuş bir gün sonra gerçekleştiğinde zamanında varma olasılığını hesaplamak için kodu değiştirin:
predict_delay('2/10/2018 21:45:00', 'JFK', 'ATL')
Bu uçuşun zamanında varma olasılığı nedir? Seyahat planlarınızın esnek olduğu durumlarda uçuşunuzu bir gün ertelemeyi tercih eder miydiniz?
Şimdi de aynı gün içinde Atlanta’dan Seattle’a gerçekleşen bir sabah uçuşunun zamanında varma olasılığını hesaplamak için kodu değiştirin:
predict_delay('2/10/2018 10:00:00', 'ATL', 'SEA')
Bu uçuşun zamanında varma olasılığı yüksek midir?
Artık tek bir kod satırından faydalanarak, bir uçuşun gecikip gecikmeyeceğini kolayca tahmin edebilirsiniz. Diğer tarihler, saatler, kalkış konumları ve varış konumlarıyla dilediğiniz gibi deneme yapabilirsiniz. Ancak bu modelin ATL, DTW, JFK, MSP ve SEA havaalanı kodlarıyla eğitildiğini ve dolayısıyla sonuçların anlamlı olması için bunların kullanılması gerektiğini unutmayın.
JFK’den kalkıp ATL’ye giden bir akşam uçuşunun belirli bir gün aralığı içindeki zamanında varma olasılığını grafikte göstermek için aşağıdaki kodu çalıştırın:
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))
Çıktının şuna benzediğini onaylayın:
Bir tarih aralığındaki zamanında varma olasılığı
Kodu, 10 Nisan ile 16 Nisan tarihleri arasında saat 13:00'te MSP için JFK'den ayrılan uçuşlar için benzer bir grafik oluşturacak şekilde değiştirin. Burada elde edilen çıktı ile bir önceki adımda elde edilen çıktı arasında ne fark var?
30 Ocak'ta SAAT 09:00, öğlen, 18:00, 18:00 ve 21:00'de SEA'den kalkan uçuşların zamanında varma olasılığını graf etmek için kendi kendinize kod yazın. Çıktının şununla aynı olduğunu onaylayın:
Belirli saatlerde zamanında varma olasılığı
Matplotlib’i kullanmaya yeni başladıysanız ve daha fazla bilgi edinmek istiyorsanız https://www.labri.fr/perso/nrougier/teaching/matplotlib/. adresinde harika bir öğretici bulabilirsiniz. Matplotlib, burada gösterilenlerden çok daha fazlasını yapmanıza olanak tanır ve bu, Python kullanıcıları arasında bu kadar popüler olmasının nedenlerinden biridir.