Wynik F1
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 23 z 58.
Model może osiągnąć maksymalną precyzję lub czułość kosztem drugiej z nich. Wynik F1 łączy obie miary i pozostaje niski, jeśli obie nie są wysokie:
Przy oznaczeniach P dla precyzji i R dla czułości, F1 wynosi 2 * P * R / (P + R). Dla modelu pogodowego:
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)) # po jednym dla każdej klasy, posortowane
print(classification_report(y_test, pred))Wyświetla to:
[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 8Raport report ocenia każdą klasę; support zlicza jej wiersze testowe. Najsłabszy wiersz wskazuje, co należy poprawić w pierwszej kolejności.
Wyzwanie
ŚredniKamera w zakładzie recyklingu sortuje przedmioty do pojemników na szkło, metal, papier i plastik. Program odczytuje k, a kod startowy trenuje kamerę k-NN, wypełnia pred i wyświetla listę bins.
- Wyświetl raport klasyfikacji.
- Znajdź pojemnik z najniższym wynikiem F1 i wyświetl go, a następnie jego słabszą miarę — precyzję lub czułość — jak poniżej (3 miejsca po przecinku).
Po raporcie, dla innego zakładu:
Weakest bin: metal, F1 0.667
Its weaker side: recall 0.571Spróbuj swoich sił
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())
# Jeden wiersz dla każdego przedmiotu na taśmie oraz pojemnika, do którego należy
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 kamery
model = KNeighborsClassifier(n_neighbors=k)
model.fit(X_train, y_train)
pred = model.predict(X_test)
# Pojemniki w kolejności odpowiadającej wynikom dla poszczególnych klas
bins = model.classes_
# Napisz swój kod poniżej
Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Uczenie nadzorowane
1Twój pierwszy model
Uczenie się na przykładachZbiory treningowe i testoweDopasowywanie i przewidywanieOcena modeluPodsumowanie: Sortownik nasion4Regresja logistyczna
Przewidywanie „tak” lub „nie”Próg decyzyjnyWagi jako dowodyWiele klasPodsumowanie: filtr spamu2Najbliżsi sąsiedzi
Jak działa k-NNWybór kGranice decyzyjneSkalowanie dla sąsiadówPodsumowanie: sąsiedzi w zbiorze Wine5Ocena klasyfikatorów
Macierz pomyłekPrecyzja i czułośćWynik F1Niezrównoważone klasyKrzywe ROCPodsumowanie: test przesiewowy8Walidacja krzyżowa
Walidacja k-krotnaUczciwe porównywanie modeliPrzeszukiwanie siatkiPodsumowanie: naprawa deskorolki11Projekt: Gatunki pingwinów
Poznaj pingwinyPrzygotuj daneWybierz modelDopracuj zwycięski modelWdróż modelPoćwicz samodzielnie: Kompilator Python online