Presisi dan Recall
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 22 dari 58.
Dua pertanyaan menilai jawaban tes flu. Dari alarm flu yang diberikan, berapa banyak yang benar? Dari kasus flu yang sebenarnya, berapa banyak yang berhasil dideteksi?
Precision menjawab pertanyaan pertama: 42 dari 45 alarm. Recall menjawab pertanyaan kedua: 42 dari 47 kasus.
from sklearn.metrics import precision_score, recall_score
print(f"{precision_score(y_test, pred):.3f}")
print(f"{recall_score(y_test, pred):.3f}"):.3f selalu menampilkan 3 angka desimal, jadi 0.9 akan mencetak 0.900. Ini mencetak:
0.933
0.894Pilih berdasarkan kesalahan yang lebih merugikan. Kasus flu yang terlewat dapat menyebar, jadi tes ini membutuhkan recall. Filter spam yang menyembunyikan email asli membutuhkan precision.
Tantangan
SedangFilter sebuah toko menyembunyikan ulasan yang tampak palsu. Kode awal membuat dua versi dari satu model, strict_pred dan eager_pred, lalu membaca kesalahan mana yang lebih merugikan: missed (ulasan palsu tetap ditampilkan) atau hidden (ulasan asli menghilang).
- Cetak precision dan recall setiap filter dengan 3 angka desimal.
- Cetak filter yang membuat lebih sedikit kesalahan tersebut, seperti di bawah ini (untuk
missed:Fewer fakes missed: ...).
Untuk toko lain dan hidden:
Strict: precision 0.900, recall 0.450
Eager: precision 0.640, recall 0.800
Fewer real reviews hidden: strictCoba sendiri
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import precision_score, recall_score
# Kesalahan mana yang lebih merugikan: terlewat (ulasan palsu tetap tampil) atau tersembunyi (ulasan asli disembunyikan)
worse = input()
# Satu baris per ulasan: 1 pada fake berarti ulasan tersebut ditulis atas pesanan
reviews = pd.read_csv("reviews.csv")
features = ["words", "exclamations", "account_days", "user_reviews", "stars", "photo"]
X_train, X_test, y_train, y_test = train_test_split(reviews[features], reviews["fake"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]
# Dua penyaring dari model yang sama: strict menyembunyikan ulasan jika peluangnya palsu mencapai 0.7, eager pada 0.3
strict_pred = proba >= 0.7
eager_pred = proba >= 0.3
# 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