Menu
CoddyTech

Matriks Konfusi

Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 21 dari 58.

Akurasi menghitung kesalahan, bukan jenisnya. Dalam tes flu, memulangkan pasien yang sakit jauh lebih buruk daripada alarm palsu. confusion_matrix menghitung tiap jenis kesalahan:

Kisi 2 kali 2 untuk tes flu pada 100 pasien. Baris menunjukkan kondisi sebenarnya, sehat lalu terkena flu; kolom menunjukkan hasil, dinyatakan sehat lalu dinyatakan terkena flu. Jawaban benar berwarna biru: 50 negatif benar, 42 positif benar. Kesalahan berwarna jingga: 3 positif palsu, 5 negatif palsu

Flu adalah kelas positif, 1. Kesalahan berada di luar diagonal: positif palsu (alarm palsu) dan negatif palsu (kasus yang terlewat).

from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay

cm = confusion_matrix(y_test, pred)  # label sebenarnya lebih dulu
print(cm)
print(cm[1, 0])  # baris 1: terkena flu, kolom 0: diprediksi sehat
ConfusionMatrixDisplay.from_predictions(y_test, pred, display_labels=["healthy", "flu"],
                                        ax=ax, colorbar=False)  # tanpa bilah warna: jumlahnya sudah jelas

Ini mencetak:

[[50  3]
 [ 5 42]]
5

Bab ini membahas cara mengurangi jumlah kasus yang terlewat di sel tersebut. Bab ini diakhiri dengan tes penyaringan yang hampir tidak melewatkan siapa pun.

challenge icon

Tantangan

Sedang

Penjaga pantai mendapat peringatan pagi saat arus rip mungkin terbentuk. Kode awal melatih model peringatan dan mengisi pred untuk pagi-pagi yang diuji (1 berarti rip).

  1. Buat matriks kebingungan dan cetak keempat jumlahnya seperti di bawah.
  2. Gambarkan pada ax, beri label calm dan rip, lalu tampilkan.

Untuk model lain:

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

Coddy menjelaskan baganmu. Bagan itu seharusnya terlihat seperti yang ini, dari alarm kebocoran pipa:

Matriks kebingungan berjudul Peringatan Kebocoran. Baris menunjukkan label sebenarnya, kering lalu bocor; kolom menunjukkan label prediksi. Sel-selnya: 61 dan 4 pada baris kering, 7 dan 28 pada baris bocor

Coba sendiri

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

# Satu baris untuk setiap pagi di pantai selancar: 1 pada rip berarti arus balik terbentuk hari itu
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)

# Peringatan arus balik dari penjaga pantai
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")

# Tulis kodemu di bawah ini
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Pembelajaran Terawasi

Latihan sendiri: Compiler Python online