Kontaminace podruhé
Všimneš si, že jednoklasový SVM nemá parametr contamination. Teď už ale dobře víš, že potřebuješ způsob, jak řídit podíl příkladů označených jako novinky, aby sis udržel/a kontrolu nad mírou falešně pozitivních výsledků. Rozhodneš se proto experimentovat s prahováním skóre. Detektor byl importován jako onesvm, k dispozici máš také data X_train, X_test, y_train, y_test, numpy jako np a funkci confusion_matrix().
Toto cvičení je součástí kurzu
Designing Machine Learning Workflows in Python
Pokyny k cvičení
- Natrénuj jednoklasový SVM a ohodnoť testovací data.
- Vypočítej pozorovaný podíl odlehlých hodnot v testovacích datech.
- Pomocí
np.quantile()zjisti, kde nastavit práh skóre tak, aby odpovídal tomuto podílu. - Použij tento práh k označení testovacích dat. Vypiš matici záměn.
Interaktivní cvičení na vyzkoušení si v praxi
Vyzkoušejte si toto cvičení dokončením tohoto ukázkového kódu.
# 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, ____ > ____))