F1 Skoru
Coddy'nin Machine Learning Journey'sinin Denetimli Öğrenme bölümünün bir parçası. Ders 23 / 58.
Bir model, diğerinden vazgeçerek kesinliği veya duyarlılığı en üst düzeye çıkarabilir. F1 skoru ikisini birleştirir ve ikisi de yüksek olmadıkça düşük kalır:
Kesinlik için P ve duyarlılık için R kullanıldığında, F1 değeri 2 * P * R / (P + R) olur. Bir hava durumu modeli için:
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)) # her sınıf için bir tane, sıralanmış
print(classification_report(y_test, pred))Bu, şunu yazdırır:
[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 8Rapor her sınıfı puanlar; support test satırlarını sayar. En zayıf satırı, önce neyi düzeltmeniz gerektiğini gösterir.
Görev
OrtaBir geri dönüşüm tesisinin kamerası öğeleri cam, metal, kâğıt ve plastik kutularına ayırır. Program k değerini okur ve başlangıç kodu kameranın k-NN modelini eğitir, pred değerini doldurur ve bins listesini oluşturur.
- Sınıflandırma raporunu yazdırın.
- F1 değeri en düşük olan kutuyu bulun ve aşağıdaki gibi kutuyu, ardından daha zayıf olan tarafını (precision veya recall) yazdırın (3 ondalık basamakla).
Raporun ardından, başka bir tesis için:
Weakest bin: metal, F1 0.667
Its weaker side: recall 0.571Kendin dene
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())
# Bant üzerindeki her öğe ve ait olduğu kutu için bir satır
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)
# Kameranın modeli
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
# Sınıf başına puanların sırasına göre kutular
bins = model.classes_
# Kodunuzu aşağıya yazın
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
1İlk Modeliniz
Örneklerden ÖğrenmeEğitim ve Test KümeleriUydurma ve Tahmin EtmeBir Modeli PuanlamaÖzet: Tohum Sınıflandırıcı4Lojistik Regresyon
Evet-Hayır TahminleriKarar EşiğiKanıt Olarak AğırlıklarBirden Fazla SınıfÖzet: Spam Filtresi2En Yakın Komşular
k-NN Nasıl Karar Verirk'yi SeçmekKarar SınırlarıKomşular İçin ÖlçeklemeÖzet: Şarap Komşuları5Sınıflandırıcıları Değerlendirme
Karmaşıklık MatrisiKesinlik ve DuyarlılıkF1 SkoruDengesiz SınıflarROC EğrileriÖzet: Tarama Testi8Çapraz Doğrulama
K-Katlı DoğrulamaModelleri Adil Bir Şekilde KarşılaştırmaIzgara AramasıÖzet: Kaykay Tamiri11Proje: Penguen Türleri
Penguenlerle TanışınVerileri HazırlayınBir Model SeçinEn İyisini AyarlayınModeli Yayına AlınKendi başına pratik yap: Online Python derleyicisi