IniziaInizia gratis

Contamination, di nuovo

Noti che la one-class SVM non ha un parametro contamination. Ma ormai sai bene che hai bisogno di un modo per controllare la proporzione di esempi etichettati come novità, così da gestire il tuo tasso di falsi positivi. Decidi quindi di sperimentare impostando una soglia sui punteggi. Il rilevatore è stato importato come onesvm; hai inoltre a disposizione i dati come X_train, X_test, y_train, y_test, numpy come np e confusion_matrix().

Questo esercizio fa parte del corso

Progettare workflow di Machine Learning in Python

Visualizza il corso

Istruzioni dell'esercizio

  • Allena la 1-class SVM e calcola i punteggi sui dati di test.
  • Calcola la proporzione osservata di outlier nei dati di test.
  • Usa np.quantile() per trovare la soglia dei punteggi che ottiene quella proporzione.
  • Usa quella soglia per etichettare i dati di test. Stampa la matrice di confusione.

Esercizio pratico interattivo

Prova a risolvere questo esercizio completando il codice di esempio.

# 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, ____ > ____))
Modifica ed esegui il codice