Пересматриваем параметр загрязнённости
Вы замечаете, что одноклассовый метод опорных векторов (SVM) не имеет параметра contamination. Однако вы уже хорошо знаете: чтобы управлять долей примеров, помечаемых как новые объекты, и тем самым контролировать уровень ложноположительных результатов, вам необходим соответствующий инструмент. Поэтому вы решаете поэкспериментировать с пороговой обработкой оценок. Детектор импортирован как onesvm; также доступны данные X_train, X_test, y_train, y_test, библиотека numpy как np и функция confusion_matrix().
Это упражнение является частью курса
Проектирование рабочих процессов машинного обучения на Python
Инструкции к упражнению
- Обучите одноклассовый 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, ____ > ____))