오염도 다시 살펴보기
one-class SVM에는 contamination 매개변수가 없다는 점을 확인했어요. 하지만 이제는 허위 양성 비율을 제어하려면, 새로움으로 라벨링되는 예시의 비율을 제어할 방법이 꼭 필요하다는 것도 잘 알고 계시죠. 그래서 점수에 임계값을 적용하는 방법을 실험해 보려고 합니다. 탐지기는 onesvm으로 가져와 두었고, 데이터는 X_train, X_test, y_train, y_test로, numpy는 np로, 그리고 confusion_matrix()도 사용할 수 있어요.
이 연습은 강의의 일부입니다
Python으로 설계하는 Machine Learning 워크플로
연습 안내
- 1-class 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, ____ > ____))