Revisiting contamination
Te das cuenta de que el SVM de una clase no tiene el parámetro contamination. Pero a estas alturas sabes que necesitas controlar la proporción de ejemplos que se etiquetan como novedades para mantener a raya la tasa de falsos positivos. Así que decides probar a umbralizar las puntuaciones. El detector se ha importado como onesvm; también tienes disponibles los datos como X_train, X_test, y_train, y_test, numpy como np, y confusion_matrix().
Este ejercicio forma parte del curso
Diseño de flujos de trabajo de Machine Learning en Python
Instrucciones del ejercicio
- Ajusta el 1-class SVM y puntúa los datos de prueba.
- Calcula la proporción observada de valores atípicos en los datos de prueba.
- Usa
np.quantile()para encontrar el umbral de las puntuaciones que logre esa proporción. - Usa ese umbral para etiquetar los datos de prueba. Imprime la matriz de confusión.
Ejercicio interactivo práctico
Prueba este ejercicio y completa el código de muestra.
# 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, ____ > ____))