LoslegenKostenlos loslegen

Kontamination, noch einmal

Du stellst fest, dass der One-Class SVM keinen contamination-Parameter hat. Mittlerweile weißt du aber, dass du eine Möglichkeit brauchst, den Anteil der als Novitäten gelabelten Beispiele zu steuern, um deine False-Positive-Rate zu kontrollieren. Also entscheidest du dich, mit einem Schwellenwert auf den Scores zu experimentieren. Der Detektor wurde als onesvm importiert; außerdem stehen dir die Daten X_train, X_test, y_train, y_test, numpy als np sowie confusion_matrix() zur Verfügung.

Diese Übung ist Teil des Kurses

Machine-Learning-Workflows in Python entwerfen

Kurs anzeigen

Anleitung zur Übung

  • Trainiere die 1-Class SVM und bewerte die Testdaten.
  • Berechne den beobachteten Anteil an Ausreißern in den Testdaten.
  • Nutze np.quantile(), um den Schwellenwert der Scores so zu bestimmen, dass genau dieser Anteil erreicht wird.
  • Verwende diesen Schwellenwert, um die Testdaten zu labeln. Gib die Confusion-Matrix aus.

Interaktive Übung

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

# Fit a one-class SVM detector and score the test data
nov_det = ____(X_train)
scores = ____(X_test)

# Find the observed proportion of outliers in the test data
prop = np.____(y_test==____)

# Compute the appropriate threshold
threshold = np.____(____, ____)

# Print the confusion matrix for the thresholded scores
print(confusion_matrix(y_test, ____ > ____))
Code bearbeiten und ausführen