LoslegenKostenlos loslegen

Umgang mit Label-Rauschen

Eine deiner Cyberanalystinnen teilt dir mit, dass viele Labels für die ersten 100 Quellrechner in deinen Trainingsdaten aufgrund eines Datenbankfehlers falsch sein könnten. Sie hofft, dass du die Daten trotzdem nutzen kannst, weil die meisten Labels noch korrekt sind, bittet dich aber, diese 100 Labels als „rauschbehaftet“ zu behandeln. Zum Glück weißt du, wie das geht – mit gewichtetem Lernen. Die verunreinigten Daten liegen in deinem Workspace als X_train, X_test, y_train_noisy, y_test vor. Du möchtest prüfen, ob du die Leistung eines GaussianNB()-Klassifikators mit gewichtetem Lernen verbessern kannst. Du kannst den optionalen Parameter sample_weight verwenden, der von den .fit()-Methoden der meisten gängigen Klassifikatoren unterstützt wird. Die Funktion accuracy_score() ist vorab geladen. Zur Orientierung kannst du das folgende Bild heranziehen.

Diese Übung ist Teil des Kurses

Machine-Learning-Workflows in Python entwerfen

Kurs anzeigen

Anleitung zur Übung

  • Fitte eine Instanz von GaussianNB() auf die Trainingsdaten mit den verunreinigten Labels.
  • Berichte die Genauigkeit auf den Testdaten mit accuracy_score().
  • Erstelle Gewichte, die Ground-Truth-Labels doppelt so hoch gewichten wie rauschbehaftete Labels. Denk daran: Die Gewichte beziehen sich auf die Trainingsdaten.
  • Fitte den Klassifikator mit den oben genannten Gewichten erneut und berichte die Genauigkeit.

Interaktive Übung

Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.

# Fit a Gaussian Naive Bayes classifier to the training data
clf = ____.____(____, y_train_noisy)

# Report its accuracy on the test data
print(accuracy_score(y_test, ____.____(X_test)))

# Assign half the weight to the first 100 noisy examples
weights = [____]*100 + [1.0]*(len(____)-100)

# Refit using weights and report accuracy. Has it improved?
clf_weights = GaussianNB().fit(X_train, y_train_noisy, ____=____)
print(accuracy_score(y_test, ____))
Code bearbeiten und ausführen