Menu
CoddyTech

Karmaşıklık Matrisi

Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 21 / 58.

Doğruluk, hataları sayar; türlerini değil. Grip testi için hasta birini eve göndermek, yanlış alarmdan çok daha kötüdür. Bir confusion_matrix her türü sayar:

100 hastada grip testi için 2'ye 2'lik bir ızgara. Satırlar gerçeği gösterir: önce sağlıklı, sonra grip. Sütunlar verilen yanıtı gösterir: önce sağlıklı denmiş, sonra grip denmiş. Mavi doğru yanıtlar: 50 doğru negatif, 42 doğru pozitif. Turuncu hatalar: 3 yanlış pozitif, 5 yanlış negatif

Grip pozitif sınıftır, 1. Hatalar köşegenin dışındadır: yanlış pozitifler (yanlış alarmlar) ve yanlış negatifler (kaçırılan vakalar).

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

cm = confusion_matrix(y_test, pred)  # önce gerçek değerler
print(cm)
print(cm[1, 0])  # satır 1: grip, sütun 0: sağlıklı olarak tahmin edildi
ConfusionMatrixDisplay.from_predictions(y_test, pred, display_labels=["healthy", "flu"],
                                        ax=ax, colorbar=False)  # renk çubuğu yok: sayılar durumu anlatıyor

Şu çıktıyı verir:

[[50  3]
 [ 5 42]]
5

Bu bölüm, kaçırılan vakalar hücresini küçültmekle ilgili. Neredeyse hiç kimseyi kaçırmayan bir tarama testiyle sona eriyor.

challenge icon

Görev

Orta

Cankurtaranlar, bir rip akıntısı oluşabileceğinde sabah uyarısı alır. Başlangıç kodu, uyarı modelini eğitir ve test sabahları için pred değerlerini doldurur (1, rip akıntısı anlamına gelir).

  1. Aşağıdaki gibi karmaşıklık matrisini oluştur ve dört sayıyı yazdır.
  2. Matrisi ax üzerinde calm ve rip etiketleriyle çiz ve göster.

Başka bir model için:

Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59

Coddy grafiğini açıklıyor. Grafik, boru sızıntısı alarmı için aşağıdaki gibi görünmelidir:

Leak Alerts başlıklı bir karmaşıklık matrisi. Satırlar gerçek etiketi, önce dry sonra leak; sütunlar tahmin edilen etiketi gösteriyor. Hücreler: dry satırında 61 ve 4, leak satırında 7 ve 28

Kendin dene

import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

# Sörf plajında her sabah için bir satır: rip sütunundaki 1, o gün bir çeken akıntı oluştuğu anlamına gelir
beach = pd.read_csv("rips.csv")
features = ["wave_height_m", "wave_period_s", "wind_kmh", "tide_change_m"]
X = beach[features]
y = beach["rip"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)

# Cankurtaranların çeken akıntı uyarısı
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
pred = model.predict(X_test)

fig, ax = plt.subplots()
ax.set_title("Rip Current Alerts")

# Kodunuzu aşağıya yazın
quiz iconKendini test et

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

Kendi başına pratik yap: Online Python derleyicisi