Skor F1
Termasuk bagian Pembelajaran Terawasi dalam perjalanan Machine Learning di Coddy. Pelajaran 23 dari 58.
Sebuah model dapat memaksimalkan presisi atau recall dengan mengorbankan yang lain. Skor F1 menggabungkan keduanya, dan tetap rendah kecuali keduanya tinggi:
Dengan P untuk presisi dan R untuk recall, F1 adalah 2 * P * R / (P + R). Untuk model cuaca:
from sklearn.metrics import f1_score, classification_report
y_test = ["sun", "sun", "rain", "rain", "snow", "sun", "rain", "snow"]
pred = ["sun", "rain", "rain", "rain", "snow", "sun", "sun", "rain"]
print(f1_score(y_test, pred, average=None)) # satu per class, diurutkan
print(classification_report(y_test, pred))Ini mencetak:
[0.57142857 0.66666667 0.66666667]
precision recall f1-score support
rain 0.50 0.67 0.57 3
snow 1.00 0.50 0.67 2
sun 0.67 0.67 0.67 3
accuracy 0.62 8
macro avg 0.72 0.61 0.63 8
weighted avg 0.69 0.62 0.63 8Skor laporan mencakup setiap kelas; support menghitung baris pengujiannya. Baris dengan skor terendah menunjukkan hal yang perlu kamu perbaiki lebih dahulu.
Tantangan
SedangKamera di pabrik daur ulang memilah barang ke dalam tempat sampah kaca, logam, kertas, dan plastik. Program membaca k, lalu kode awal melatih kamera dengan k-NN, mengisi pred, dan menyusun daftar bins.
- Cetak laporan klasifikasi.
- Temukan tempat sampah dengan F1 terendah dan cetak, lalu cetak sisi yang lebih lemah, precision atau recall, seperti di bawah ini (3 desimal).
Setelah laporan, untuk pabrik lain:
Weakest bin: metal, F1 0.667
Its weaker side: recall 0.571Coba sendiri
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.neighbors import KNeighborsClassifier
from sklearn.metrics import classification_report, f1_score, precision_score, recall_score
k = int(input())
# Satu baris untuk setiap barang di ban berjalan, beserta wadah tempatnya
items = pd.read_csv("recycling.csv")
features = ["weight_g", "shine", "see_through", "bend"]
X_train, X_test, y_train, y_test = train_test_split(items[features], items["material"], test_size=0.25, random_state=0)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
# Model kamera
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
# Wadah-wadah sesuai urutan skor tiap class
bins = model.classes_
# 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