Menu
CoddyTech

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:

Siatka 2 na 2 przedstawiająca wyniki testu na grypę u 100 pacjentów. Wiersze oznaczają stan faktyczny: najpierw zdrowi, potem chorzy na grypę; kolumny oznaczają wynik testu: najpierw uznani za zdrowych, potem uznani za chorych na grypę. Niebieskie pola oznaczają poprawne wyniki: 50 prawdziwie negatywnych, 42 prawdziwie pozytywne. Pomarańczowe pola oznaczają błędy: 3 fałszywie pozytywne, 5 fałszywie negatywnych

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 liczbowe

To wyświetla:

[[50  3]
 [ 5 42]]
5

Ten rozdział dotyczy zmniejszania liczby przypadków w komórce przeoczonych przypadków. Kończy się testem przesiewowym, który niemal nikogo nie pomija.

challenge icon

Wyzwanie

Średni

Ratownicy 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).

  1. Utwórz macierz pomyłek i wypisz cztery wartości, jak poniżej.
  2. Narysuj ją na ax, z etykietami calm i rip, a następnie ją wyświetl.

Dla innego modelu:

Rips caught: 30
Rips missed: 2
False alarms: 9
Calm days cleared: 59

Coddy opisuje twój wykres. Powinien wyglądać jak ten, przedstawiający alarm o wycieku z rury:

Macierz pomyłek zatytułowana Alerty o wyciekach. Wiersze przedstawiają prawdziwą etykietę: sucho, a następnie wyciek; kolumny przedstawiają przewidywaną etykietę. Wartości w komórkach: 61 i 4 w wierszu „sucho”, 7 i 28 w wierszu „wyciek”

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
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nadzorowane

Poćwicz samodzielnie: Kompilator Python online