ComeçarComece de graça

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

Ver curso

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, ____ > ____))
Editar e executar o código