ROC Eğrileri
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 25 / 58.
Her eşik, kendine özgü bir geri çağırma oranı ve yanlış alarm sayısı verir. ROC eğrisi bunların tümünü aynı anda gösterir:
Yatay eksen: yanlış pozitif oranı, yanlış pozitif olarak işaretlenen sağlıklı hastaların oranı. Dikey eksen: duyarlılık. Eşikler düştükçe (1, 1) noktasına yaklaşılır.
from sklearn.metrics import roc_curve, roc_auc_score
proba = model.predict_proba(X_test)[:, 1]
fpr, tpr, thresholds = roc_curve(y_test, proba) # tpr, duyarlılıktır
ax.plot(fpr, tpr)
print(f"{roc_auc_score(y_test, proba):.3f}")Bu, eğrinin altındaki alan olan AUC değerini, yani 0.914 değerini yazdırır. 1 kusursuzdur, 0.5 yazı tura gibidir. Daha yüksek bir eğri, aynı sayıda yanlış alarm için daha fazlasını yakalar.
Görev
OrtaBir kiraz çiftliği, don olabilecek gecelerde don ateşleri yakar. Başlangıç kodu, logistic ve knn adlı iki don modeli eğitir ve grafiği hazırlar.
draw_roc(model, name)fonksiyonunu yaz: modelin ROC eğrisiniaxüzerindenameetiketiyle çizsin ve aşağıdaki gibi AUC değerini yazdırsın.- Her iki model için de bu fonksiyonu çağır, kesikli bir köşegen çizgi ekleyip
coin tossetiketi ver ve bir açıklama kutusu ekle; ardından grafiği göster.
Heyelan modelleri için:
logistic AUC: 0.869
k-NN AUC: 0.924Ardından Coddy grafiğini açıklıyor. Onlarınki şöyle görünüyor:
Kendin dene
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import roc_curve, roc_auc_score
# Bir kiraz çiftliğinde her ilkbahar gecesi için bir satır: frost sütunundaki 1, şafaktan önce don oluştuğu anlamına gelir
nights = pd.read_csv("frost.csv")
features = ["temp_6pm_c", "humidity_pct", "wind_kmh", "cloud_pct"]
X_train, X_test, y_train, y_test = train_test_split(
nights[features], nights["frost"], test_size=0.25, random_state=0, stratify=nights["frost"])
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# İki don modeli
logistic = LogisticRegression(max_iter=1000)
logistic.fit(X_train, y_train)
knn = KNeighborsClassifier(n_neighbors=5)
knn.fit(X_train, y_train)
fig, ax = plt.subplots()
ax.set_title("Frost Warnings")
ax.set_xlabel("False positive rate")
ax.set_ylabel("Recall")
# Kodunuzu aşağıya yazın
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Denetimli Öğrenme bölümündeki tüm dersler
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi