Bắt đầu ngayBắt đầu miễn phí

Tổng hợp mọi thứ

Bên cạnh pipeline phát hiện bất thường dựa trên khoảng cách mà bạn đã xây dựng ở bài trước, bạn cũng muốn hỗ trợ cách học dựa trên đặc trưng với one-class SVM. Bạn quyết định trích xuất hai đặc trưng: thứ nhất là độ dài chuỗi; thứ hai là mã hóa số của chữ cái đầu tiên trong chuỗi, thu được bằng hàm LabelEncoder() mô tả ở Chương 1. Để đảm bảo so sánh công bằng, bạn sẽ đưa các điểm outlier vào phép tính AUC. Đã được import sẵn: LabelEncoder(), roc_auc_score() dưới tên auc()OneClassSVM. Dữ liệu có sẵn dưới dạng pandas data frame tên proteins với hai cột labelseq, và hai lớp IMMUNE SYSTEMVIRUS. Một bộ phát hiện LoF đã fit sẵn có tên lof_detector.

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

Xem khóa học

Hướng dẫn bài tập

  • Với một chuỗi s, len(s) trả về độ dài của nó. Áp dụng vào cột seq để tạo cột mới len.
  • Với một chuỗi s, list(s) trả về danh sách các ký tự. Dùng cách này để lấy chữ cái đầu tiên của mỗi chuỗi, rồi mã hóa nó bằng LabelEncoder().
  • Điểm LoF nằm trong thuộc tính negative_outlier_factor_. Tính AUC của chúng.
  • Fit một 1-class SVM cho data frame chỉ có hai cột lenfirst. Trích xuất điểm số và đánh giá cả điểm LoF và điểm SVM bằng AUC.

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.

# Create a feature that contains the length of the string
proteins['len'] = proteins['seq'].apply(____)

# Create a feature encoding the first letter of the string
proteins['first'] =  ____.____(
  proteins['seq'].apply(____))

# Extract scores from the fitted LoF object, compute its AUC
scores_lof = lof_detector.____
print(____(proteins['label']==____, scores_lof))

# Fit a 1-class SVM, extract its scores, and compute its AUC
svm = ____.____(proteins[['len', 'first']])
scores_svm = svm.____(proteins[['len', 'first']])
print(____(proteins['label']==____, scores_svm))
Chỉnh sửa và Chạy Mã