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
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, ____ > ____))