Przejdź do głównej zawartości

confusion_matrix

czym jest macierz pomyłek? ⭐

  • Macierz pomyłek (Confusion Matrix) to tabela używana do oceny wydajności modelu klasyfikacyjnego.
  • Pokazuje rzeczywiste vs przewidywane klasy dla wszystkich próbek.
  • Pozwala na szczegółową analizę błędów modelu.
  • Jest podstawą do obliczania wielu metryk klasyfikacji.

struktura macierzy pomyłek ⭐

Dla klasyfikacji binarnej (2 klasy):

                Przewidywane
Rzeczywiste Pozytywne Negatywne
Pozytywne TP FN
Negatywne FP TN

Gdzie:

  • TP (True Positive): Poprawnie przewidziane pozytywne
  • TN (True Negative): Poprawnie przewidziane negatywne
  • FP (False Positive): Błędnie przewidziane pozytywne (Type I Error)
  • FN (False Negative): Błędnie przewidziane negatywne (Type II Error)

przykładowy kod (scikit-learn)

from sklearn.metrics import confusion_matrix, classification_report
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import make_classification
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np

# Generowanie danych
X, y = make_classification(n_samples=1000, n_features=10, n_classes=2, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Trenowanie modelu
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# Macierz pomyłek
cm = confusion_matrix(y_test, y_pred)
print("Macierz pomyłek:")
print(cm)

# Wizualizacja macierzy pomyłek
plt.figure(figsize=(8, 6))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues',
xticklabels=['Negatywne', 'Pozytywne'],
yticklabels=['Negatywne', 'Pozytywne'])
plt.title('Macierz Pomyłek')
plt.ylabel('Rzeczywiste')
plt.xlabel('Przewidywane')
plt.show()

# Obliczanie metryk z macierzy pomyłek
TP = cm[1, 1]
TN = cm[0, 0]
FP = cm[0, 1]
FN = cm[1, 0]

accuracy = (TP + TN) / (TP + TN + FP + FN)
precision = TP / (TP + FP)
recall = TP / (TP + FN)
f1_score = 2 * (precision * recall) / (precision + recall)

print(f"\nMetryki obliczone z macierzy pomyłek:")
print(f"Accuracy: {accuracy:.3f}")
print(f"Precision: {precision:.3f}")
print(f"Recall: {recall:.3f}")
print(f"F1-Score: {f1_score:.3f}")

praktyczne ćwiczenia

  • Stwórz macierz pomyłek dla różnych modeli klasyfikacyjnych.
  • Analizuj wzorce błędów w macierzy pomyłek.
  • Porównaj macierze pomyłek dla zbalansowanych i niezbalansowanych zbiorów danych.
  • Zaimplementuj własną funkcję do obliczania metryk z macierzy pomyłek.
  • Wizualizuj macierze pomyłek dla wieloklasowej klasyfikacji.

interpretacja macierzy pomyłek

Dla problemów medycznych

  • FP (False Positive): Fałszywy alarm - pacjent zdrowy uznany za chorego
  • FN (False Negative): Przeoczenie - pacjent chory uznany za zdrowego

Dla problemów biznesowych

  • FP (False Positive): Fałszywy alarm - klient uznany za chętnego do zakupu
  • FN (False Negative): Przeoczenie - klient chętny do zakupu uznany za niechętnego

macierz pomyłek dla wieloklasowej klasyfikacji

# Przykład dla 3 klas
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier

# Ładowanie danych iris
iris = load_iris()
X, y = iris.data, iris.target
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Trenowanie modelu
model = RandomForestClassifier(random_state=42)
model.fit(X_train, y_train)
y_pred = model.predict(X_test)

# Macierz pomyłek dla wieloklasowej klasyfikacji
cm_multi = confusion_matrix(y_test, y_pred)

plt.figure(figsize=(10, 8))
sns.heatmap(cm_multi, annot=True, fmt='d', cmap='Blues',
xticklabels=iris.target_names,
yticklabels=iris.target_names)
plt.title('Macierz Pomyłek - Iris Dataset')
plt.ylabel('Rzeczywiste')
plt.xlabel('Przewidywane')
plt.show()

dobre praktyki

  • Normalizacja: Rozważ normalizację macierzy pomyłek dla lepszej interpretacji.
  • Wizualizacja: Zawsze wizualizuj macierz pomyłek.
  • Kontekst: Interpretuj wyniki w kontekście problemu biznesowego.
  • Porównanie: Porównuj macierze pomyłek między różnymi modelami.

polecane źródła