Contaminarea, revizitată
Observi că SVM-ul cu o singură clasă nu are un parametru contamination. Știi însă deja că ai nevoie de o modalitate de a controla proporția exemplelor etichetate drept noutăți, pentru a gestiona rata de fals pozitiv. Prin urmare, decizi să experimentezi cu praguri aplicate scorurilor. Detectorul a fost importat ca onesvm; ai disponibile și datele X_train, X_test, y_train, y_test, numpy ca np, și funcția confusion_matrix().
Acest exercițiu face parte din cursul
Proiectarea fluxurilor de lucru pentru Machine Learning în Python
Instrucțiuni pentru exercițiu
- Antrenează SVM-ul cu o singură clasă și calculează scorurile pentru datele de testare.
- Calculează proporția observată a valorilor aberante în datele de testare.
- Folosește
np.quantile()pentru a determina pragul la care să aplici scorurile, astfel încât să obții acea proporție. - Folosește pragul respectiv pentru a eticheta datele de testare. Afișează matricea de confuzie.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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, ____ > ____))