Macierz pomyłek
Część sekcji Uczenie nadzorowane ścieżki Machine Learning w Coddy. Lekcja 21 z 58.
Dokładność liczy błędy, ale nie rozróżnia ich rodzajów. W przypadku testu na grypę odesłanie chorego pacjenta do domu jest znacznie gorsze niż fałszywy alarm. confusion_matrix zlicza każdy rodzaj błędu:
Grypa jest klasą pozytywną, 1. Błędy znajdują się poza przekątną: fałszywie pozytywne (fałszywe alarmy) i fałszywie negatywne (przeoczone przypadki).
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
cm = confusion_matrix(y_test, pred) # najpierw wartości rzeczywiste
print(cm)
print(cm[1, 0]) # wiersz 1: ma grypę, kolumna 0: uznano za zdrową osobę
ConfusionMatrixDisplay.from_predictions(y_test, pred, display_labels=["healthy", "flu"],
ax=ax, colorbar=False) # bez paska kolorów: wystarczą wartości liczboweTo wyświetla:
[[50 3]
[ 5 42]]
5Ten rozdział dotyczy zmniejszania liczby przypadków w komórce przeoczonych przypadków. Kończy się testem przesiewowym, który niemal nikogo nie pomija.
Wyzwanie
ŚredniRatownicy otrzymują rano alert, gdy może powstać prąd wsteczny. Kod początkowy trenuje model alertów i wypełnia pred dla poranków testowych (1 oznacza prąd wsteczny).
- Utwórz macierz pomyłek i wypisz cztery wartości, jak poniżej.
- Narysuj ją na
ax, z etykietamicalmirip, a następnie ją wyświetl.
Dla innego modelu:
Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59Coddy opisuje twój wykres. Powinien wyglądać jak ten, przedstawiający alarm o wycieku z rury:
Spróbuj swoich sił
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import confusion_matrix, ConfusionMatrixDisplay
# Jeden wiersz na każdy poranek na plaży dla surferów: 1 w kolumnie rip oznacza, że tego dnia powstał prąd wsteczny
beach = pd.read_csv("rips.csv")
features = ["wave_height_m", "wave_period_s", "wind_kmh", "tide_change_m"]
X = beach[features]
y = beach["rip"]
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=0)
# Ostrzeżenie ratowników przed prądem wstecznym
model = LogisticRegression(max_iter=1000)
model.fit(X_train, y_train)
pred = model.predict(X_test)
fig, ax = plt.subplots()
ax.set_title("Rip Current Alerts")
# Wpisz 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