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:
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 jelasIni mencetak:
[[50 3]
[ 5 42]]
5Bab ini membahas cara mengurangi jumlah kasus yang terlewat di sel tersebut. Bab ini diakhiri dengan tes penyaringan yang hampir tidak melewatkan siapa pun.
Tantangan
SedangPenjaga 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).
- Buat matriks kebingungan dan cetak keempat jumlahnya seperti di bawah.
- Gambarkan pada
ax, beri labelcalmdanrip, lalu tampilkan.
Untuk model lain:
Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59Coddy menjelaskan baganmu. Bagan itu seharusnya terlihat seperti yang ini, dari alarm kebocoran pipa:
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
Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Pembelajaran Terawasi
1Model Pertamamu
Belajar dari ContohData Latih dan Data UjiMelatih dan MemprediksiMenilai ModelRangkuman: Penyortir Benih4Regresi Logistik
Prediksi Ya atau TidakAmbang KeputusanBobot sebagai BuktiBeberapa KelasRangkuman: Filter Spam2Tetangga Terdekat
Cara k-NN MenentukanMemilih kBatas KeputusanPenskalaan untuk TetanggaRingkasan: Tetangga Wine5Mengukur Model Klasifikasi
Matriks KonfusiPresisi dan RecallSkor F1Kelas Tidak SeimbangKurva ROCRangkuman: Tes SkriningLatihan sendiri: Compiler Python online