Xem lại contamination
Bạn nhận thấy one-class SVM không có tham số contamination. Nhưng đến giờ bạn hiểu rõ là mình thật sự cần một cách để kiểm soát tỷ lệ mẫu bị gán nhãn là novelty nhằm kiểm soát tỷ lệ dương tính giả. Vì vậy bạn quyết định thử nghiệm đặt ngưỡng trên điểm số. Bộ phát hiện đã được import là onesvm, bạn cũng có sẵn dữ liệu X_train, X_test, y_train, y_test, numpy là np, và confusion_matrix().
Bài tập này là một phần của khóa học
Thiết kế quy trình Machine Learning bằng Python
Hướng dẫn bài tập
- Huấn luyện 1-class SVM và chấm điểm dữ liệu kiểm tra.
- Tính tỷ lệ outlier quan sát được trong dữ liệu kiểm tra.
- Dùng
np.quantile()để tìm ngưỡng điểm số nhằm đạt đúng tỷ lệ đó. - Dùng ngưỡng này để gán nhãn dữ liệu kiểm tra. In ma trận nhầm lẫn.
Bài tập tương tác thực hành trực tiếp
Hãy thử làm bài tập này bằng cách hoàn thành đoạn mã mẫu này.
# 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, ____ > ____))