Знову про contamination
Ви помічаєте, що one-class SVM не має параметра contamination. Але ви вже знаєте, що вам конче потрібен спосіб керувати часткою прикладів, позначених як нові, щоб контролювати частоту хибних спрацьовувань. Тож ви вирішуєте поекспериментувати з порогуванням оцінок. Детектор імпортовано як onesvm, також у вас є дані X_train, X_test, y_train, y_test, numpy як np і confusion_matrix().
Ця вправа є частиною курсу
Проєктування робочих процесів машинного навчання в Python
Інструкції до вправи
- Навчіть 1‑класовий SVM і отримайте оцінки для тестових даних.
- Обчисліть спостережувану частку викидів у тестових даних.
- Використайте
np.quantile(), щоб знайти поріг для оцінок, який дає таку частку. - Застосуйте цей поріг для маркування тестових даних. Виведіть матрицю неточностей.
Інтерактивна практична вправа
Спробуйте виконати цю вправу, доповнивши цей зразок коду.
# 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, ____ > ____))