Menu
CoddyTech

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:

İki model için çubuklar. Dengesiz: kesinlik 1, duyarlılık 0.1, basit ortalama 0.55, F1 yalnızca 0.18. Dengeli: kesinlik 0.8, duyarlılık 0.7, basit ortalama 0.75, F1 0.75

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         8

Rapor her sınıfı puanlar; support test satırlarını sayar. En zayıf satırı, önce neyi düzeltmeniz gerektiğini gösterir.

challenge icon

Görev

Orta

Bir 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.

  1. Sınıflandırma raporunu yazdırın.
  2. 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.571

Kendin 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
quiz iconKendini test et

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

Kendi başına pratik yap: Online Python derleyicisi