Aan de slagGa gratis aan de slag

Contaminatie herbekeken

Je merkt dat one-class SVM geen contamination-parameter heeft. Maar je weet inmiddels dat je een manier nodig hebt om het aandeel voorbeelden dat als nieuwheid wordt gelabeld te sturen om je false-positivepercentage te beheersen. Daarom besluit je te experimenteren met een drempel op de scores. De detector is geïmporteerd als onesvm; je hebt ook de data als X_train, X_test, y_train, y_test, numpy als np, en confusion_matrix() beschikbaar.

Deze oefening maakt deel uit van de cursus

Machine Learning-workflows ontwerpen in Python

Cursus bekijken

Oefeninstructies

  • Fit de 1-class SVM en geef scores voor de testdata.
  • Bereken het geobserveerde aandeel outliers in de testdata.
  • Gebruik np.quantile() om te bepalen bij welke drempel de scores dat aandeel opleveren.
  • Gebruik die drempel om de testdata te labelen. Print de confusion matrix.

Praktische interactieve oefening

Probeer deze oefening eens door deze voorbeeldcode in te vullen.

# 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 bewerken en uitvoeren