Contaminação revisitada
Você percebe que o SVM de uma classe não tem o parâmetro contamination. Mas, a essa altura, você já sabe que precisa controlar a proporção de exemplos rotulados como novidades para ajustar sua taxa de falsos positivos. Então, você decide experimentar aplicar um limite às pontuações. O detector foi importado como onesvm; você também tem os dados como X_train, X_test, y_train, y_test, numpy como np e confusion_matrix().
Este exercício faz parte do curso
Projetando Workflows de Machine Learning em Python
Instruções do exercício
- Treine o SVM de 1 classe e calcule as pontuações dos dados de teste.
- Calcule a proporção observada de outliers nos dados de teste.
- Use
np.quantile()para encontrar o ponto de corte nas pontuações que atinja essa proporção. - Use esse limite para rotular os dados de teste. Imprima a matriz de confusão.
Exercício interativo prático
Experimente este exercício completando este código de exemplo.
# 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, ____ > ____))